Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e51205d3 authored by andreydav's avatar andreydav Committed by Andrey Davydov
Browse files

[Flexiglass] New password input field design for compose bouncer

Use OutlinedSecureTextField, set shape and colors according to new
mocks.

Bug: 413302868
Test: manual verification
Flag: com.android.systemui.compose_bouncer
Change-Id: Ia250477a4e2a66fe69518b13d32e06b900f856c1
parent 056d0be9
Loading
Loading
Loading
Loading
+10 −14
Original line number Diff line number Diff line
@@ -18,11 +18,13 @@

package com.android.systemui.bouncer.ui.composable

import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.foundation.text.KeyboardOptions
import androidx.compose.material3.IconButtonDefaults
import androidx.compose.material3.LocalTextStyle
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.SecureTextField
import androidx.compose.material3.OutlinedSecureTextField
import androidx.compose.material3.OutlinedTextFieldDefaults
import androidx.compose.runtime.Composable
import androidx.compose.runtime.DisposableEffect
import androidx.compose.runtime.LaunchedEffect
@@ -30,17 +32,14 @@ import androidx.compose.runtime.getValue
import androidx.compose.runtime.remember
import androidx.compose.ui.ExperimentalComposeUiApi
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.drawBehind
import androidx.compose.ui.focus.FocusRequester
import androidx.compose.ui.focus.focusRequester
import androidx.compose.ui.focus.onFocusChanged
import androidx.compose.ui.geometry.Offset
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.input.key.Key
import androidx.compose.ui.input.key.key
import androidx.compose.ui.input.key.onInterceptKeyBeforeSoftKeyboard
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.LocalDensity
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.input.ImeAction
import androidx.compose.ui.text.input.KeyboardType
@@ -81,10 +80,9 @@ internal fun PasswordBouncer(viewModel: PasswordBouncerViewModel, modifier: Modi
    }

    val color = MaterialTheme.colorScheme.onSurfaceVariant
    val lineWidthPx = with(LocalDensity.current) { 2.dp.toPx() }

    SelectedUserAwareInputConnection(selectedUserId) {
        SecureTextField(
        OutlinedSecureTextField(
            state = viewModel.textFieldState,
            enabled = isInputEnabled,
            textStyle = LocalTextStyle.current.copy(textAlign = TextAlign.Center),
@@ -100,14 +98,6 @@ internal fun PasswordBouncer(viewModel: PasswordBouncerViewModel, modifier: Modi
                    .sysuiResTag("bouncer_text_entry")
                    .focusRequester(focusRequester)
                    .onFocusChanged { viewModel.onTextFieldFocusChanged(it.isFocused) }
                    .drawBehind {
                        drawLine(
                            color = color,
                            start = Offset(x = 0f, y = size.height - lineWidthPx),
                            end = Offset(size.width, y = size.height - lineWidthPx),
                            strokeWidth = lineWidthPx,
                        )
                    }
                    .onInterceptKeyBeforeSoftKeyboard { keyEvent ->
                        if (keyEvent.key == Key.Back) {
                            viewModel.onImeDismissed()
@@ -122,6 +112,12 @@ internal fun PasswordBouncer(viewModel: PasswordBouncerViewModel, modifier: Modi
                } else {
                    null
                },
            shape = RoundedCornerShape(28.dp),
            colors =
                OutlinedTextFieldDefaults.colors(
                    focusedBorderColor = color,
                    unfocusedBorderColor = color,
                ),
        )
    }
}