mirror of
https://github.com/Aviortheking/Neo-Store.git
synced 2025-06-07 08:19:55 +00:00
Add pooling container for previews
New Preference Toolkit
This commit is contained in:
parent
eb47f3882f
commit
dfa7d6ffbd
@ -213,6 +213,8 @@ dependencies {
|
|||||||
|
|
||||||
debugImplementation("androidx.compose.ui:ui-tooling:$composeVersion")
|
debugImplementation("androidx.compose.ui:ui-tooling:$composeVersion")
|
||||||
debugImplementation("androidx.compose.ui:ui-tooling-preview:$composeVersion")
|
debugImplementation("androidx.compose.ui:ui-tooling-preview:$composeVersion")
|
||||||
|
debugImplementation("androidx.customview:customview-poolingcontainer:1.0.0-rc01")
|
||||||
|
debugImplementation("androidx.customview:customview:1.2.0-alpha01")
|
||||||
}
|
}
|
||||||
|
|
||||||
// using a task as a preBuild dependency instead of a function that takes some time insures that it runs
|
// using a task as a preBuild dependency instead of a function that takes some time insures that it runs
|
||||||
|
@ -0,0 +1,42 @@
|
|||||||
|
package com.looker.droidify.ui.compose.pages.settings.components
|
||||||
|
|
||||||
|
import androidx.compose.foundation.background
|
||||||
|
import androidx.compose.foundation.layout.Arrangement
|
||||||
|
import androidx.compose.foundation.layout.Column
|
||||||
|
import androidx.compose.foundation.layout.fillMaxWidth
|
||||||
|
import androidx.compose.foundation.layout.padding
|
||||||
|
import androidx.compose.material3.MaterialTheme
|
||||||
|
import androidx.compose.material3.Slider
|
||||||
|
import androidx.compose.material3.Text
|
||||||
|
import androidx.compose.runtime.Composable
|
||||||
|
import androidx.compose.ui.Alignment
|
||||||
|
import androidx.compose.ui.Modifier
|
||||||
|
import androidx.compose.ui.unit.dp
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
fun PreferenceSlider(
|
||||||
|
modifier: Modifier = Modifier,
|
||||||
|
title: String,
|
||||||
|
steps: Int = 20,
|
||||||
|
valueRange: ClosedFloatingPointRange<Float> = 10f..200f,
|
||||||
|
value: () -> Float,
|
||||||
|
onChange: (Float) -> Unit
|
||||||
|
) {
|
||||||
|
Column(
|
||||||
|
modifier = modifier
|
||||||
|
.fillMaxWidth()
|
||||||
|
.background(MaterialTheme.colorScheme.surface, MaterialTheme.shapes.extraLarge)
|
||||||
|
.padding(16.dp),
|
||||||
|
verticalArrangement = Arrangement.SpaceBetween,
|
||||||
|
horizontalAlignment = Alignment.Start
|
||||||
|
) {
|
||||||
|
Text(text = title, style = MaterialTheme.typography.titleMedium)
|
||||||
|
Slider(
|
||||||
|
modifier = Modifier.fillMaxWidth(),
|
||||||
|
value = value(),
|
||||||
|
valueRange = valueRange,
|
||||||
|
steps = steps,
|
||||||
|
onValueChange = onChange
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,42 @@
|
|||||||
|
package com.looker.droidify.ui.compose.pages.settings.components
|
||||||
|
|
||||||
|
import androidx.compose.foundation.background
|
||||||
|
import androidx.compose.foundation.layout.Arrangement
|
||||||
|
import androidx.compose.foundation.layout.Column
|
||||||
|
import androidx.compose.foundation.layout.Row
|
||||||
|
import androidx.compose.foundation.layout.fillMaxWidth
|
||||||
|
import androidx.compose.foundation.layout.padding
|
||||||
|
import androidx.compose.material3.MaterialTheme
|
||||||
|
import androidx.compose.material3.Switch
|
||||||
|
import androidx.compose.material3.Text
|
||||||
|
import androidx.compose.runtime.Composable
|
||||||
|
import androidx.compose.ui.Alignment
|
||||||
|
import androidx.compose.ui.Modifier
|
||||||
|
import androidx.compose.ui.unit.dp
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
fun PreferenceSwitch(
|
||||||
|
modifier: Modifier = Modifier,
|
||||||
|
switchTitle: String,
|
||||||
|
switchDescription: String,
|
||||||
|
checkedState: () -> Boolean,
|
||||||
|
onCheck: (Boolean) -> Unit
|
||||||
|
) {
|
||||||
|
Row(
|
||||||
|
modifier = modifier
|
||||||
|
.fillMaxWidth()
|
||||||
|
.background(MaterialTheme.colorScheme.surface, MaterialTheme.shapes.extraLarge)
|
||||||
|
.padding(16.dp),
|
||||||
|
verticalAlignment = Alignment.CenterVertically,
|
||||||
|
horizontalArrangement = Arrangement.SpaceBetween
|
||||||
|
) {
|
||||||
|
Column(
|
||||||
|
horizontalAlignment = Alignment.Start,
|
||||||
|
verticalArrangement = Arrangement.spacedBy(6.dp)
|
||||||
|
) {
|
||||||
|
Text(text = switchTitle, style = MaterialTheme.typography.titleSmall)
|
||||||
|
Text(text = switchDescription, style = MaterialTheme.typography.bodyMedium)
|
||||||
|
}
|
||||||
|
Switch(checked = checkedState(), onCheckedChange = onCheck)
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,35 @@
|
|||||||
|
package com.looker.droidify.ui.compose.pages.settings.components
|
||||||
|
|
||||||
|
import androidx.compose.foundation.background
|
||||||
|
import androidx.compose.foundation.clickable
|
||||||
|
import androidx.compose.foundation.layout.Arrangement
|
||||||
|
import androidx.compose.foundation.layout.Column
|
||||||
|
import androidx.compose.foundation.layout.fillMaxWidth
|
||||||
|
import androidx.compose.foundation.layout.padding
|
||||||
|
import androidx.compose.material3.MaterialTheme
|
||||||
|
import androidx.compose.material3.Text
|
||||||
|
import androidx.compose.runtime.Composable
|
||||||
|
import androidx.compose.ui.Alignment
|
||||||
|
import androidx.compose.ui.Modifier
|
||||||
|
import androidx.compose.ui.unit.dp
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
fun PreferenceWithData(
|
||||||
|
modifier: Modifier = Modifier,
|
||||||
|
title: String,
|
||||||
|
description: String,
|
||||||
|
onClick: () -> Unit
|
||||||
|
) {
|
||||||
|
Column(
|
||||||
|
modifier = modifier
|
||||||
|
.fillMaxWidth()
|
||||||
|
.clickable(onClick = onClick)
|
||||||
|
.background(MaterialTheme.colorScheme.surface, MaterialTheme.shapes.extraLarge)
|
||||||
|
.padding(16.dp),
|
||||||
|
verticalArrangement = Arrangement.SpaceBetween,
|
||||||
|
horizontalAlignment = Alignment.Start
|
||||||
|
) {
|
||||||
|
Text(text = title, style = MaterialTheme.typography.titleSmall)
|
||||||
|
Text(text = description, style = MaterialTheme.typography.bodyMedium)
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,14 @@
|
|||||||
|
package com.looker.droidify.utility
|
||||||
|
|
||||||
|
sealed interface PreferenceType {
|
||||||
|
data class Switch(val title: String, val description: String, val key: String) : PreferenceType
|
||||||
|
|
||||||
|
data class Slider(
|
||||||
|
val title: String,
|
||||||
|
val value: Float,
|
||||||
|
val range: ClosedFloatingPointRange<Float>,
|
||||||
|
val key: String
|
||||||
|
) : PreferenceType
|
||||||
|
|
||||||
|
data class Data(val title: String, val description: String, val key: String) : PreferenceType
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user