Add PNP settings.

This commit is contained in:
Alex Hart
2023-02-28 13:19:34 -04:00
committed by Greyson Parrelli
parent f3693c966a
commit 45a04423b0
15 changed files with 425 additions and 167 deletions

View File

@@ -0,0 +1,32 @@
package org.signal.core.ui
import androidx.compose.foundation.layout.padding
import androidx.compose.material3.Divider
import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import org.signal.core.ui.theme.SignalTheme
/**
* Thin divider lines for separating content.
*/
object Dividers {
@Composable
fun Default(modifier: Modifier = Modifier) {
Divider(
thickness = 1.5.dp,
color = MaterialTheme.colorScheme.surfaceVariant,
modifier = modifier.padding(vertical = 16.25.dp)
)
}
}
@Preview
@Composable
private fun DefaultPreview() {
SignalTheme(isDarkMode = false) {
Dividers.Default()
}
}

View File

@@ -0,0 +1,55 @@
package org.signal.core.ui
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.RadioButton
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.dimensionResource
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import org.signal.core.ui.theme.SignalTheme
object Rows {
/**
* A row consisting of a radio button and text, which takes up the full
* width of the screen.
*/
@Composable
fun RadioRow(
selected: Boolean,
text: String,
modifier: Modifier = Modifier
) {
Row(
modifier = modifier
.fillMaxWidth()
.padding(
horizontal = dimensionResource(id = R.dimen.core_ui__gutter),
vertical = 16.dp
)
) {
RadioButton(
selected = selected,
onClick = null,
modifier = Modifier.padding(end = 24.dp)
)
Text(
text = text,
style = MaterialTheme.typography.bodyLarge
)
}
}
}
@Preview
@Composable
private fun RadioRowPreview() {
SignalTheme(isDarkMode = false) {
Rows.RadioRow(true, "RadioRow")
}
}

View File

@@ -0,0 +1,54 @@
package org.signal.core.ui
import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.layout.padding
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Scaffold
import androidx.compose.material3.Text
import androidx.compose.material3.TopAppBar
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.painter.Painter
import androidx.compose.ui.unit.dp
@OptIn(ExperimentalMaterial3Api::class)
object Scaffolds {
@Composable
fun Settings(
title: String,
onNavigationClick: () -> Unit,
painter: Painter,
modifier: Modifier = Modifier,
navigationContentDescription: String? = null,
content: @Composable (PaddingValues) -> Unit
) {
Scaffold(
topBar = {
TopAppBar(
title = {
Text(
text = title,
style = MaterialTheme.typography.titleLarge
)
},
navigationIcon = {
IconButton(
onClick = onNavigationClick,
Modifier.padding(end = 16.dp)
) {
Icon(
painter = painter,
contentDescription = navigationContentDescription
)
}
}
)
},
modifier = modifier,
content = content
)
}
}

View File

@@ -0,0 +1,40 @@
package org.signal.core.ui
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.Modifier
import androidx.compose.ui.res.dimensionResource
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import org.signal.core.ui.theme.SignalTheme
object Texts {
/**
* Header row for settings pages.
*/
@Composable
fun SectionHeader(
text: String,
modifier: Modifier = Modifier
) {
Text(
text = text,
style = MaterialTheme.typography.titleSmall,
modifier = modifier
.padding(
horizontal = dimensionResource(id = R.dimen.core_ui__gutter)
)
.padding(top = 16.dp, bottom = 12.dp)
)
}
}
@Preview
@Composable
private fun SectionHeaderPreview() {
SignalTheme(isDarkMode = false) {
Texts.SectionHeader("Header")
}
}

View File

@@ -11,7 +11,7 @@ import androidx.compose.ui.text.font.FontFamily
import androidx.compose.ui.text.font.FontStyle
import androidx.compose.ui.unit.sp
private val typography = Typography().apply {
private val typography = Typography().run {
copy(
headlineLarge = headlineLarge.copy(
lineHeight = 40.sp,

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<dimen name="core_ui__gutter">24dp</dimen>
</resources>

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<dimen name="core_ui__gutter">16dp</dimen>
</resources>