Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add friend feature added, add group dummy added #33

Merged
merged 1 commit into from
Nov 4, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 9 additions & 3 deletions src/main/kotlin/Main.kt
Original file line number Diff line number Diff line change
Expand Up @@ -101,19 +101,20 @@ import org.briarproject.briar.desktop.contact.GroupList
import org.briarproject.briar.desktop.contact.GroupPeerList
import org.briarproject.briar.desktop.navigation.BriarSidebar
import org.briarproject.briar.desktop.ui.AboutScreen
import org.briarproject.briar.desktop.ui.AddFriend
import org.briarproject.briar.desktop.ui.AddGroup
import org.briarproject.briar.desktop.ui.ExplainerChat
import org.briarproject.briar.desktop.ui.ExplainerGroup
import org.briarproject.briar.desktop.ui.ExplainerToxNotRunning
import org.briarproject.briar.desktop.ui.HorizontalDivider
import org.briarproject.briar.desktop.ui.UiMode
import org.briarproject.briar.desktop.ui.UiPlaceholder
import org.briarproject.briar.desktop.ui.VerticalDivider
import org.briarproject.briar.desktop.utils.InternationalizationUtils.i18n
import java.awt.Component
import java.awt.LayoutManager
import java.awt.Toolkit
import java.util.*
import java.util.concurrent.Executors
import java.util.concurrent.Semaphore
import java.util.prefs.Preferences
import javax.swing.JButton
import javax.swing.JPanel
Expand Down Expand Up @@ -662,8 +663,13 @@ fun App()
}
}
}
UiMode.ABOUT -> AboutScreen()
UiMode.ADDFRIEND -> {
if (tox_running_state == "running") AddFriend()
else ExplainerToxNotRunning()
}
UiMode.ADDGROUP -> AddGroup()
UiMode.SETTINGS -> SettingDetails()
UiMode.ABOUT -> AboutScreen()
else -> UiPlaceholder()
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,8 @@ fun BriarSidebar(
BriarSidebarButton(UiMode.CONTACTS)
BriarSidebarButton(UiMode.GROUPS)
BriarSidebarButton(UiMode.SETTINGS)
BriarSidebarButton(UiMode.ADDFRIEND)
BriarSidebarButton(UiMode.ADDGROUP)
BriarSidebarButton(UiMode.ABOUT)
}
}
Expand Down
92 changes: 92 additions & 0 deletions src/main/kotlin/org/briarproject/briar/desktop/ui/AddFriend.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
package org.briarproject.briar.desktop.ui

import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.width
import androidx.compose.foundation.text.KeyboardOptions
import androidx.compose.material.Button
import androidx.compose.material.ButtonDefaults
import androidx.compose.material.Text
import androidx.compose.material.TextField
import androidx.compose.material.TextFieldDefaults
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.text.TextStyle
import androidx.compose.ui.text.input.KeyboardCapitalization
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import com.zoffcc.applications.trifa.HelperGeneric
import com.zoffcc.applications.trifa.MainActivity.Companion.tox_friend_add
import com.zoffcc.applications.trifa.MainActivity.Companion.tox_friend_get_public_key
import com.zoffcc.applications.trifa.TRIFAGlobals.UINT32_MAX_JAVA
import com.zoffcc.applications.trifa.ToxVars.TOX_ADDRESS_SIZE
import contactstore
import org.briarproject.briar.desktop.contact.ContactItem

@Composable
fun AddFriend() = Box {
var add_friend_toxid by remember { mutableStateOf("") }
var add_button_enabled by remember { mutableStateOf(false) }
Row(modifier = Modifier.fillMaxWidth()) {
Spacer(modifier = Modifier.width(30.dp))
TextField(singleLine = true,
textStyle = TextStyle(fontSize = 14.sp),
modifier = Modifier.padding(0.dp).width(400.dp),
colors = TextFieldDefaults.textFieldColors(backgroundColor = Color.White),
keyboardOptions = KeyboardOptions(
capitalization = KeyboardCapitalization.None,
autoCorrect = false,
), value = add_friend_toxid, placeholder = {
Text("enter Friend's ToxID ...", fontSize = 13.sp)
}, onValueChange = {
add_friend_toxid = it
if (it.length == (TOX_ADDRESS_SIZE * 2))
{
// HINT: correct toxid hex length
add_button_enabled = true
} else
{
add_button_enabled = false
}
})
Spacer(modifier = Modifier.width(30.dp))
Button(
onClick = {
// HINT: invite Friend
val friendnum: Long = tox_friend_add(add_friend_toxid, "please add me")
if (friendnum > -1)
{
if (friendnum != UINT32_MAX_JAVA)
{
// HINT: friend added ok
add_friend_toxid = ""
add_button_enabled = false
HelperGeneric.update_savedata_file_wrapper()
try
{
val friend_pubkey = tox_friend_get_public_key(friendnum)
contactstore.add(item = ContactItem(name = "new Friend #" + friendnum, isConnected = 0, pubkey = friend_pubkey!!))
} catch (_: Exception)
{
}
} else
{
// some error on adding friend
}
} else
{
// some error on adding friend
}
}, colors = ButtonDefaults.buttonColors(), enabled = add_button_enabled) {
Text("invite Friend")
}
}
}
15 changes: 15 additions & 0 deletions src/main/kotlin/org/briarproject/briar/desktop/ui/AddGroup.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package org.briarproject.briar.desktop.ui

import Theme
import androidx.compose.foundation.layout.Box
import androidx.compose.material.Text
import androidx.compose.runtime.Composable
import org.briarproject.briar.desktop.utils.InternationalizationUtils

@Composable
fun AddGroup() = Box {
Theme {
Explainer(headline = InternationalizationUtils.i18n("Not yet implemented"), text = InternationalizationUtils.i18n("..."))
}
}

Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.unit.dp
import org.briarproject.briar.desktop.utils.InternationalizationUtils
import org.briarproject.briar.desktop.utils.InternationalizationUtils.i18n

@Composable
Expand All @@ -20,6 +21,12 @@ fun ExplainerChat() {

val PARAGRAPH_WIDTH = 540.dp

@Composable
fun ExplainerToxNotRunning() =
Explainer(headline = InternationalizationUtils.i18n("Tox is not running"), text = InternationalizationUtils.i18n("press the <start> button"))
{}


@Composable
fun Explainer(headline: String, text: String, content: @Composable () -> Unit = {}) =
Column(
Expand Down
9 changes: 8 additions & 1 deletion src/main/kotlin/org/briarproject/briar/desktop/ui/UiMode.kt
Original file line number Diff line number Diff line change
Expand Up @@ -21,11 +21,18 @@ package org.briarproject.briar.desktop.ui
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Contacts
import androidx.compose.material.icons.filled.Group
import androidx.compose.material.icons.filled.GroupAdd
import androidx.compose.material.icons.filled.Info
import androidx.compose.material.icons.filled.PersonAdd
import androidx.compose.material.icons.filled.Settings
import androidx.compose.ui.graphics.vector.ImageVector

enum class UiMode(val icon: ImageVector, val contentDescriptionKey: String)
{
CONTACTS(Icons.Filled.Contacts, "access.mode.contacts"), GROUPS(Icons.Filled.Group, "access.mode.groups"), SETTINGS(Icons.Filled.Settings, "access.mode.settings"), ABOUT(Icons.Filled.Info, "access.mode.about"),
CONTACTS(Icons.Filled.Contacts, "access.mode.contacts"),
GROUPS(Icons.Filled.Group, "access.mode.groups"),
SETTINGS(Icons.Filled.Settings, "access.mode.settings"),
ADDFRIEND(Icons.Filled.PersonAdd, "access.mode.addfriend"),
ADDGROUP(Icons.Filled.GroupAdd, "access.mode.addgroup"),
ABOUT(Icons.Filled.Info, "access.mode.about"),
}
Loading