Skip to content
Snippets Groups Projects
Commit 28c57391 authored by Sebastian's avatar Sebastian
Browse files

Display real contacts in UI

parent 85eb491f
No related branches found
No related tags found
1 merge request!5Connect briar to UI
...@@ -36,6 +36,8 @@ constructor( ...@@ -36,6 +36,8 @@ constructor(
private val passwordStrengthEstimator: PasswordStrengthEstimator private val passwordStrengthEstimator: PasswordStrengthEstimator
) : BriarService { ) : BriarService {
private val contacts: MutableList<Contact> = ArrayList()
@Composable @Composable
override fun start() { override fun start() {
if (!accountManager.accountExists()) { if (!accountManager.accountExists()) {
...@@ -76,7 +78,7 @@ constructor( ...@@ -76,7 +78,7 @@ constructor(
) )
is Screen.Main -> is Screen.Main ->
BriarUIStateManager() BriarUIStateManager(contacts)
} }
} }
} }
...@@ -86,9 +88,9 @@ constructor( ...@@ -86,9 +88,9 @@ constructor(
lifecycleManager.startServices(dbKey) lifecycleManager.startServices(dbKey)
lifecycleManager.waitForStartup() lifecycleManager.waitForStartup()
val contacts: Collection<Contact> = contactManager.getContacts() val contacts: Collection<Contact> = contactManager.getContacts()
// TODO: do something useful with contacts
for (contact in contacts) { for (contact in contacts) {
println("${contact.author.name} (${contact.alias})") println("${contact.author.name} (${contact.alias})")
this.contacts.add(contact)
} }
} }
} }
...@@ -11,7 +11,7 @@ import androidx.compose.runtime.remember ...@@ -11,7 +11,7 @@ import androidx.compose.runtime.remember
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Color
import org.briarproject.briar.desktop.paul.data.ContactList import org.briarproject.bramble.api.contact.Contact
import org.briarproject.briar.desktop.paul.theme.briarBlack import org.briarproject.briar.desktop.paul.theme.briarBlack
/* /*
...@@ -20,11 +20,11 @@ import org.briarproject.briar.desktop.paul.theme.briarBlack ...@@ -20,11 +20,11 @@ import org.briarproject.briar.desktop.paul.theme.briarBlack
* Multiplatform, stateless, composable are found in briarCompose (possible briar-compose project in the future) * Multiplatform, stateless, composable are found in briarCompose (possible briar-compose project in the future)
*/ */
@Composable @Composable
fun BriarUIStateManager() { fun BriarUIStateManager(contacts: List<Contact>) {
// current selected mode, changed using the sidebar buttons // current selected mode, changed using the sidebar buttons
val (uiMode, onModeChange) = remember { mutableStateOf("Contacts") } val (uiMode, onModeChange) = remember { mutableStateOf("Contacts") }
// current selected contact // current selected contact
val (uiContact, onContactSelect) = remember { mutableStateOf(ContactList.contacts[0]) } val (uiContact, onContactSelect) = remember { mutableStateOf(contacts[0]) }
// current selected private message // current selected private message
val (uiPrivateMsg, onPMSelect) = remember { mutableStateOf(0) } val (uiPrivateMsg, onPMSelect) = remember { mutableStateOf(0) }
// current selected forum // current selected forum
...@@ -41,7 +41,7 @@ fun BriarUIStateManager() { ...@@ -41,7 +41,7 @@ fun BriarUIStateManager() {
Row() { Row() {
BriarSidebar(uiMode, onModeChange) BriarSidebar(uiMode, onModeChange)
when (uiMode) { when (uiMode) {
"Contacts" -> PrivateMessageView(uiContact, onContactSelect) "Contacts" -> PrivateMessageView(contacts, uiContact, onContactSelect)
else -> Box(modifier = Modifier.fillMaxSize().background(briarBlack)) { else -> Box(modifier = Modifier.fillMaxSize().background(briarBlack)) {
Text("TBD", modifier = Modifier.align(Alignment.Center), color = Color.White) Text("TBD", modifier = Modifier.align(Alignment.Center), color = Color.White)
} }
......
...@@ -50,8 +50,7 @@ import androidx.compose.ui.unit.IntSize ...@@ -50,8 +50,7 @@ import androidx.compose.ui.unit.IntSize
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp import androidx.compose.ui.unit.sp
import androidx.compose.ui.window.v1.DialogProperties import androidx.compose.ui.window.v1.DialogProperties
import org.briarproject.briar.desktop.paul.data.ContactList import org.briarproject.bramble.api.contact.Contact
import org.briarproject.briar.desktop.paul.model.Contact
import org.briarproject.briar.desktop.paul.model.Message import org.briarproject.briar.desktop.paul.model.Message
import org.briarproject.briar.desktop.paul.theme.briarBlack import org.briarproject.briar.desktop.paul.theme.briarBlack
import org.briarproject.briar.desktop.paul.theme.briarBlue import org.briarproject.briar.desktop.paul.theme.briarBlue
...@@ -66,7 +65,7 @@ import org.briarproject.briar.desktop.paul.theme.lightGray ...@@ -66,7 +65,7 @@ import org.briarproject.briar.desktop.paul.theme.lightGray
val HEADER_SIZE = 66.dp val HEADER_SIZE = 66.dp
@Composable @Composable
fun PrivateMessageView(uiContact: Contact, onContactSelect: (Contact) -> Unit) { fun PrivateMessageView(contacts: List<Contact>, uiContact: Contact, onContactSelect: (Contact) -> Unit) {
// Local State for managing the Add Contact Popup // Local State for managing the Add Contact Popup
val (AddContactDialog, onCancelAdd) = remember { mutableStateOf(false) } val (AddContactDialog, onCancelAdd) = remember { mutableStateOf(false) }
AddContactDialog(AddContactDialog, onCancelAdd) AddContactDialog(AddContactDialog, onCancelAdd)
...@@ -93,7 +92,7 @@ fun PrivateMessageView(uiContact: Contact, onContactSelect: (Contact) -> Unit) { ...@@ -93,7 +92,7 @@ fun PrivateMessageView(uiContact: Contact, onContactSelect: (Contact) -> Unit) {
} }
Divider(color = divider, thickness = 1.dp, modifier = Modifier.fillMaxWidth()) Divider(color = divider, thickness = 1.dp, modifier = Modifier.fillMaxWidth())
Column(modifier = Modifier.verticalScroll(rememberScrollState())) { Column(modifier = Modifier.verticalScroll(rememberScrollState())) {
for (c in ContactList.contacts) { for (c in contacts) {
ContactCard(c, uiContact, onSel = onContactSelect) ContactCard(c, uiContact, onSel = onContactSelect)
} }
} }
...@@ -146,6 +145,7 @@ fun AddContactDialog(isVisible: Boolean, onCancel: (Boolean) -> Unit) { ...@@ -146,6 +145,7 @@ fun AddContactDialog(isVisible: Boolean, onCancel: (Boolean) -> Unit) {
color = lightGray color = lightGray
) )
TextField( TextField(
// TODO: use real code
"briar://ksdjlfgakslhjgaklsjdhglkasjdlk3j12h4lk2j3tkj4", "briar://ksdjlfgakslhjgaklsjdhglkasjdlk3j12h4lk2j3tkj4",
onValueChange = {}, onValueChange = {},
modifier = Modifier.fillMaxWidth() modifier = Modifier.fillMaxWidth()
...@@ -185,7 +185,7 @@ fun AddContactDialog(isVisible: Boolean, onCancel: (Boolean) -> Unit) { ...@@ -185,7 +185,7 @@ fun AddContactDialog(isVisible: Boolean, onCancel: (Boolean) -> Unit) {
@Composable @Composable
fun ContactCard(contact: Contact, selContact: Contact, onSel: (Contact) -> Unit) { fun ContactCard(contact: Contact, selContact: Contact, onSel: (Contact) -> Unit) {
var bgColor = briarBlack var bgColor = briarBlack
if (selContact.name == contact.name) { if (selContact.id == contact.id) {
bgColor = darkGray bgColor = darkGray
} }
Row( Row(
...@@ -195,7 +195,9 @@ fun ContactCard(contact: Contact, selContact: Contact, onSel: (Contact) -> Unit) ...@@ -195,7 +195,9 @@ fun ContactCard(contact: Contact, selContact: Contact, onSel: (Contact) -> Unit)
) { ) {
Row(modifier = Modifier.align(Alignment.CenterVertically).padding(horizontal = 16.dp)) { Row(modifier = Modifier.align(Alignment.CenterVertically).padding(horizontal = 16.dp)) {
Image( Image(
bitmap = imageFromResource("images/profile_images/" + contact.profile_pic), // TODO: use correct image
// bitmap = imageFromResource("images/profile_images/" + contact.profile_pic),
bitmap = imageFromResource("images/profile_images/p1.png"),
"image", "image",
modifier = Modifier.size(40.dp).align(Alignment.CenterVertically).clip( modifier = Modifier.size(40.dp).align(Alignment.CenterVertically).clip(
CircleShape CircleShape
...@@ -203,13 +205,13 @@ fun ContactCard(contact: Contact, selContact: Contact, onSel: (Contact) -> Unit) ...@@ -203,13 +205,13 @@ fun ContactCard(contact: Contact, selContact: Contact, onSel: (Contact) -> Unit)
) )
Column(modifier = Modifier.align(Alignment.CenterVertically).padding(start = 12.dp)) { Column(modifier = Modifier.align(Alignment.CenterVertically).padding(start = 12.dp)) {
Text( Text(
contact.name, contact.author.name,
fontSize = 14.sp, fontSize = 14.sp,
color = Color.White, color = Color.White,
modifier = Modifier.align(Alignment.Start).padding(bottom = 2.dp) modifier = Modifier.align(Alignment.Start).padding(bottom = 2.dp)
) )
Text( Text(
contact.last_heard, "1 min",
fontSize = 10.sp, fontSize = 10.sp,
color = Color.LightGray, color = Color.LightGray,
modifier = Modifier.align(Alignment.Start) modifier = Modifier.align(Alignment.Start)
...@@ -224,7 +226,8 @@ fun ContactCard(contact: Contact, selContact: Contact, onSel: (Contact) -> Unit) ...@@ -224,7 +226,8 @@ fun ContactCard(contact: Contact, selContact: Contact, onSel: (Contact) -> Unit)
color = Color.White, color = Color.White,
radius = size / 2f radius = size / 2f
) )
if (contact.online) { val online = true
if (online) {
drawCircle( drawCircle(
color = briarGreen, color = briarGreen,
radius = 14.dp.toPx() / 2f radius = 14.dp.toPx() / 2f
...@@ -319,7 +322,9 @@ fun DrawMessageRow(uiContact: Contact) { ...@@ -319,7 +322,9 @@ fun DrawMessageRow(uiContact: Contact) {
Box(modifier = Modifier.fillMaxWidth().height(HEADER_SIZE + 1.dp)) { Box(modifier = Modifier.fillMaxWidth().height(HEADER_SIZE + 1.dp)) {
Row(modifier = Modifier.align(Alignment.Center)) { Row(modifier = Modifier.align(Alignment.Center)) {
Image( Image(
bitmap = imageFromResource("images/profile_images/" + uiContact.profile_pic), // TODO: use correct image
// bitmap = imageFromResource("images/profile_images/" + UIContact.profile_pic),
bitmap = imageFromResource("images/profile_images/p2.png"),
"sel_contact_prof", "sel_contact_prof",
modifier = Modifier.size(36.dp).align( modifier = Modifier.size(36.dp).align(
Alignment.CenterVertically Alignment.CenterVertically
...@@ -328,7 +333,7 @@ fun DrawMessageRow(uiContact: Contact) { ...@@ -328,7 +333,7 @@ fun DrawMessageRow(uiContact: Contact) {
).border(2.dp, color = Color.White, CircleShape) ).border(2.dp, color = Color.White, CircleShape)
) )
Text( Text(
uiContact.name, uiContact.author.name,
color = Color.White, color = Color.White,
modifier = Modifier.align(Alignment.CenterVertically).padding(start = 12.dp), modifier = Modifier.align(Alignment.CenterVertically).padding(start = 12.dp),
fontSize = 24.sp fontSize = 24.sp
...@@ -340,7 +345,9 @@ fun DrawMessageRow(uiContact: Contact) { ...@@ -340,7 +345,9 @@ fun DrawMessageRow(uiContact: Contact) {
Divider(color = divider, thickness = 1.dp, modifier = Modifier.fillMaxWidth().align(Alignment.BottomCenter)) Divider(color = divider, thickness = 1.dp, modifier = Modifier.fillMaxWidth().align(Alignment.BottomCenter))
} }
Box(Modifier.padding(top = HEADER_SIZE + 1.dp, bottom = HEADER_SIZE)) { Box(Modifier.padding(top = HEADER_SIZE + 1.dp, bottom = HEADER_SIZE)) {
DrawTextBubbles(uiContact.privateMessages) // TODO: use real messages
//DrawTextBubbles(UIContact.privateMessages)
DrawTextBubbles(ArrayList())
} }
var text by remember { mutableStateOf(TextFieldValue("")) } var text by remember { mutableStateOf(TextFieldValue("")) }
Box(Modifier.align(Alignment.BottomCenter).background(darkGray)) { Box(Modifier.align(Alignment.BottomCenter).background(darkGray)) {
...@@ -351,7 +358,7 @@ fun DrawMessageRow(uiContact: Contact) { ...@@ -351,7 +358,7 @@ fun DrawMessageRow(uiContact: Contact) {
modifier = Modifier.padding(start = 8.dp, end = 8.dp, bottom = 8.dp).fillMaxWidth(), modifier = Modifier.padding(start = 8.dp, end = 8.dp, bottom = 8.dp).fillMaxWidth(),
label = { Text(text = "Message") }, label = { Text(text = "Message") },
textStyle = TextStyle(color = Color.White), textStyle = TextStyle(color = Color.White),
placeholder = { Text(text = "Your message to " + uiContact.name) }, placeholder = { Text(text = "Your message to " + uiContact.author.name) },
onValueChange = { onValueChange = {
text = it text = it
}, },
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment