mirror of
https://github.com/Aviortheking/Neo-Store.git
synced 2025-04-22 10:52:10 +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-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
|
||||
|
@ -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