diff --git a/src/main/kotlin/org/briarproject/briar/desktop/contact/ContactCard.kt b/src/main/kotlin/org/briarproject/briar/desktop/contact/ContactCard.kt index b3bce311e4aa1512c3d75115b1b5b5736054a54b..b843087f7374f5f771a74e448b790da784aab99a 100644 --- a/src/main/kotlin/org/briarproject/briar/desktop/contact/ContactCard.kt +++ b/src/main/kotlin/org/briarproject/briar/desktop/contact/ContactCard.kt @@ -7,6 +7,7 @@ import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height @@ -68,6 +69,7 @@ fun ContactCard( contactItem: BaseContactItem, onSel: () -> Unit, selected: Boolean, + padding: PaddingValues = PaddingValues(0.dp), ) { val bgColor = if (selected) MaterialTheme.colors.selectedCard else MaterialTheme.colors.surfaceVariant val outlineColor = MaterialTheme.colors.outline @@ -80,7 +82,7 @@ fun ContactCard( backgroundColor = bgColor, contentColor = MaterialTheme.colors.onSurface ) { - Row(horizontalArrangement = Arrangement.SpaceBetween) { + Row(horizontalArrangement = Arrangement.SpaceBetween, modifier = Modifier.padding(padding)) { Row(modifier = Modifier.align(Alignment.CenterVertically).padding(horizontal = 16.dp)) { when (contactItem) { is ContactItem -> { diff --git a/src/main/kotlin/org/briarproject/briar/desktop/contact/ContactList.kt b/src/main/kotlin/org/briarproject/briar/desktop/contact/ContactList.kt index 81711cb521e6c7519a8dfaee216e995d1d9a2668..658601133ddbc98b769213c8f45a4d5875e05bf0 100644 --- a/src/main/kotlin/org/briarproject/briar/desktop/contact/ContactList.kt +++ b/src/main/kotlin/org/briarproject/briar/desktop/contact/ContactList.kt @@ -1,12 +1,19 @@ package org.briarproject.briar.desktop.contact +import androidx.compose.foundation.VerticalScrollbar +import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.fillMaxHeight +import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items +import androidx.compose.foundation.lazy.rememberLazyListState +import androidx.compose.foundation.rememberScrollbarAdapter import androidx.compose.material.MaterialTheme import androidx.compose.material.Scaffold import androidx.compose.runtime.Composable @@ -14,6 +21,7 @@ import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue +import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp import org.briarproject.briar.desktop.contact.add.remote.AddContactDialog @@ -31,6 +39,9 @@ fun ContactList( ) { var isContactDialogVisible by remember { mutableStateOf(false) } if (isContactDialogVisible) AddContactDialog(onClose = { isContactDialogVisible = false }) + + val scrollState = rememberLazyListState() + Scaffold( modifier = Modifier.fillMaxHeight().width(CONTACTLIST_WIDTH), backgroundColor = MaterialTheme.colors.surfaceVariant, @@ -45,15 +56,23 @@ fun ContactList( ) } }, - content = { - LazyColumn { - items(contactList) { contactItem -> - ContactCard( - contactItem, - { selectContact(contactItem) }, - isSelected(contactItem) - ) + content = { padding -> + Box(modifier = Modifier.padding(padding).fillMaxSize()) { + LazyColumn(state = scrollState) { + items(contactList) { contactItem -> + ContactCard( + contactItem, + { selectContact(contactItem) }, + isSelected(contactItem), + PaddingValues(end = 12.dp) + ) + } } + + VerticalScrollbar( + adapter = rememberScrollbarAdapter(scrollState), + modifier = Modifier.align(Alignment.CenterEnd).fillMaxHeight() + ) } }, )