aboutsummaryrefslogtreecommitdiff
path: root/ui-compose/src/main
diff options
context:
space:
mode:
authorHarsh Shandilya <me@msfjarvis.dev>2022-07-23 19:15:36 +0530
committerGitHub <noreply@github.com>2022-07-23 13:45:36 +0000
commit9c5e9c8e4381aaa2886d0ad03070b2a57a937cce (patch)
tree5c1d13d4879c6efe7082b8a987d34aec38a64e10 /ui-compose/src/main
parent6d0bff144c35c9f2c73f34065e972b3f48a34241 (diff)
Improvements to key list activity (#2030)
Diffstat (limited to 'ui-compose/src/main')
-rw-r--r--ui-compose/src/main/kotlin/app/passwordstore/ui/APSAppBar.kt36
-rw-r--r--ui-compose/src/main/kotlin/app/passwordstore/ui/compose/theme/Theme.kt15
-rw-r--r--ui-compose/src/main/kotlin/app/passwordstore/ui/compose/theme/utils.kt27
-rw-r--r--ui-compose/src/main/kotlin/app/passwordstore/ui/pgp/PGPKeyList.kt39
4 files changed, 67 insertions, 50 deletions
diff --git a/ui-compose/src/main/kotlin/app/passwordstore/ui/APSAppBar.kt b/ui-compose/src/main/kotlin/app/passwordstore/ui/APSAppBar.kt
new file mode 100644
index 00000000..6900b25f
--- /dev/null
+++ b/ui-compose/src/main/kotlin/app/passwordstore/ui/APSAppBar.kt
@@ -0,0 +1,36 @@
+package app.passwordstore.ui
+
+import androidx.compose.material3.Icon
+import androidx.compose.material3.IconButton
+import androidx.compose.material3.SmallTopAppBar
+import androidx.compose.material3.Text
+import androidx.compose.material3.TopAppBarDefaults
+import androidx.compose.runtime.Composable
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.graphics.Color
+import androidx.compose.ui.graphics.painter.Painter
+
+@Composable
+public fun APSAppBar(
+ title: String,
+ backgroundColor: Color,
+ navigationIcon: Painter?,
+ onNavigationIconClick: (() -> Unit)?,
+ modifier: Modifier = Modifier,
+) {
+ SmallTopAppBar(
+ title = { Text(text = title) },
+ navigationIcon = {
+ if (navigationIcon != null) {
+ IconButton(onClick = { onNavigationIconClick?.invoke() }) {
+ Icon(
+ painter = navigationIcon,
+ contentDescription = null,
+ )
+ }
+ }
+ },
+ colors = TopAppBarDefaults.smallTopAppBarColors(containerColor = backgroundColor),
+ modifier = modifier,
+ )
+}
diff --git a/ui-compose/src/main/kotlin/app/passwordstore/ui/compose/theme/Theme.kt b/ui-compose/src/main/kotlin/app/passwordstore/ui/compose/theme/Theme.kt
index 9bd8003e..695ff6cc 100644
--- a/ui-compose/src/main/kotlin/app/passwordstore/ui/compose/theme/Theme.kt
+++ b/ui-compose/src/main/kotlin/app/passwordstore/ui/compose/theme/Theme.kt
@@ -1,12 +1,12 @@
package app.passwordstore.ui.compose.theme
-import androidx.compose.foundation.isSystemInDarkTheme
+import androidx.compose.material3.ColorScheme
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.darkColorScheme
import androidx.compose.material3.lightColorScheme
import androidx.compose.runtime.Composable
-private val LightThemeColors =
+internal val LightThemeColors =
lightColorScheme(
primary = md_theme_light_primary,
onPrimary = md_theme_light_onPrimary,
@@ -34,7 +34,7 @@ private val LightThemeColors =
inverseOnSurface = md_theme_light_inverseOnSurface,
inverseSurface = md_theme_light_inverseSurface,
)
-private val DarkThemeColors =
+internal val DarkThemeColors =
darkColorScheme(
primary = md_theme_dark_primary,
onPrimary = md_theme_dark_onPrimary,
@@ -65,15 +65,8 @@ private val DarkThemeColors =
@Composable
public fun APSTheme(
- useDarkTheme: Boolean = isSystemInDarkTheme(),
+ colors: ColorScheme,
content: @Composable () -> Unit,
) {
- val colors =
- if (!useDarkTheme) {
- LightThemeColors
- } else {
- DarkThemeColors
- }
-
MaterialTheme(colorScheme = colors, typography = AppTypography, content = content)
}
diff --git a/ui-compose/src/main/kotlin/app/passwordstore/ui/compose/theme/utils.kt b/ui-compose/src/main/kotlin/app/passwordstore/ui/compose/theme/utils.kt
new file mode 100644
index 00000000..096862dc
--- /dev/null
+++ b/ui-compose/src/main/kotlin/app/passwordstore/ui/compose/theme/utils.kt
@@ -0,0 +1,27 @@
+package app.passwordstore.ui.compose.theme
+
+import android.content.Context
+import android.os.Build
+import androidx.compose.foundation.isSystemInDarkTheme
+import androidx.compose.material3.ColorScheme
+import androidx.compose.material3.dynamicDarkColorScheme
+import androidx.compose.material3.dynamicLightColorScheme
+import androidx.compose.runtime.Composable
+
+@Composable
+public fun decideColorScheme(context: Context): ColorScheme {
+ val isDarkTheme = isSystemInDarkTheme()
+ return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
+ if (isDarkTheme) {
+ dynamicDarkColorScheme(context)
+ } else {
+ dynamicLightColorScheme(context)
+ }
+ } else {
+ if (isDarkTheme) {
+ DarkThemeColors
+ } else {
+ LightThemeColors
+ }
+ }
+}
diff --git a/ui-compose/src/main/kotlin/app/passwordstore/ui/pgp/PGPKeyList.kt b/ui-compose/src/main/kotlin/app/passwordstore/ui/pgp/PGPKeyList.kt
deleted file mode 100644
index ccc6fa01..00000000
--- a/ui-compose/src/main/kotlin/app/passwordstore/ui/pgp/PGPKeyList.kt
+++ /dev/null
@@ -1,39 +0,0 @@
-package app.passwordstore.ui.pgp
-
-import androidx.compose.foundation.clickable
-import androidx.compose.foundation.layout.Box
-import androidx.compose.foundation.layout.fillMaxWidth
-import androidx.compose.foundation.layout.padding
-import androidx.compose.foundation.lazy.LazyColumn
-import androidx.compose.foundation.lazy.items
-import androidx.compose.material3.Text
-import androidx.compose.runtime.Composable
-import androidx.compose.ui.Modifier
-import androidx.compose.ui.unit.dp
-import app.passwordstore.crypto.GpgIdentifier
-
-@Composable
-public fun KeyList(
- identifiers: List<GpgIdentifier>,
- onItemClick: (identifier: GpgIdentifier) -> Unit,
- modifier: Modifier = Modifier,
-) {
- LazyColumn(modifier = modifier) {
- items(identifiers) { identifier ->
- KeyItem(identifier = identifier, modifier = Modifier.clickable { onItemClick(identifier) })
- }
- }
-}
-
-@Composable
-private fun KeyItem(
- identifier: GpgIdentifier,
- modifier: Modifier = Modifier,
-) {
- val label =
- when (identifier) {
- is GpgIdentifier.KeyId -> identifier.id.toString()
- is GpgIdentifier.UserId -> identifier.email
- }
- Box(modifier = modifier.padding(16.dp).fillMaxWidth()) { Text(text = label) }
-}