From 8bb7a43e98a7da4edc7249b2d287a72c52709db8 Mon Sep 17 00:00:00 2001 From: ialokim <ialokim@mailbox.org> Date: Mon, 20 Dec 2021 17:42:04 +0100 Subject: [PATCH] add scrollbar to contact list --- .../briar/desktop/contact/ContactCard.kt | 4 ++- .../briar/desktop/contact/ContactList.kt | 35 ++++++++++++++----- 2 files changed, 30 insertions(+), 9 deletions(-) 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 b3bce311e4..b843087f73 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 81711cb521..658601133d 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() + ) } }, ) -- GitLab