srctree

endoffile78 parent e50148a8 a487dfe6
Send messages

inlinesplit
app/src/main/java/ltd/evilcorp/atox/App.kt added: 61, removed: 27, total 34
@@ -7,5 +7,6 @@ class App : Application() {
lateinit var profile: String
lateinit var password: String
lateinit var toxThread: ToxThread
var contacts = ArrayList<ContactModel>()
}
}
 
app/src/main/java/ltd/evilcorp/atox/ContactModel.kt added: 61, removed: 27, total 34
@@ -1,3 +1,3 @@
package ltd.evilcorp.atox
 
class ContactModel(var name: String, val toxId: String, var lastMessage: String)
class ContactModel(var name: String, val toxId: String, var lastMessage: String, val friendNumber: Int)
 
app/src/main/java/ltd/evilcorp/atox/Tox.kt added: 61, removed: 27, total 34
@@ -8,6 +8,7 @@ import im.tox.tox4j.core.enums.ToxMessageType
import im.tox.tox4j.core.enums.ToxUserStatus
import im.tox.tox4j.impl.jni.ToxCoreImpl
import im.tox.tox4j.core.options.ToxOptions
import ltd.evilcorp.atox.activity.ChatActivity
import java.io.File
 
private class NoToxEventListener : ToxCoreEventListener<Int> {
@@ -91,8 +92,12 @@ class Tox(options: ToxOptions) {
return String(tox.name)
}
 
fun addContact(toxId: String, message: String) {
tox.addFriend(toxId.hexToByteArray(), message.toByteArray())
fun addContact(toxId: String, message: String): Int {
return tox.addFriend(toxId.hexToByteArray(), message.toByteArray())
}
 
fun sendMessage(friendNumber: Int, message: String): Int {
return tox.friendSendMessage(friendNumber, ToxMessageType.NORMAL, 0, message.toByteArray())
}
 
fun save(destination: String, encrypt: Boolean) {
 
app/src/main/java/ltd/evilcorp/atox/ToxThread.kt added: 61, removed: 27, total 34
@@ -13,6 +13,7 @@ class ToxThread(saveDestination: String, saveOption: SaveDataOptions) : HandlerT
const val msgSave = 1
const val msgSetName = 2
const val msgAddContact = 3
const val msgSendMsg = 4
}
 
private val tox = Tox(
@@ -53,6 +54,11 @@ class ToxThread(saveDestination: String, saveOption: SaveDataOptions) : HandlerT
tox.addContact(addContact.toxId, addContact.message)
true
}
msgSendMsg -> {
Log.e("ToxThread", "Sending message to friend number: ${it.arg1}")
tox.sendMessage(it.arg1, it.obj.toString())
true
}
else -> {
Log.e("ToxThread", "Unknown message: ${it.what}")
false
 
app/src/main/java/ltd/evilcorp/atox/activity/ChatActivity.kt added: 61, removed: 27, total 34
@@ -1,14 +1,15 @@
package ltd.evilcorp.atox.activity
 
import android.os.Bundle
import android.os.Handler
import android.os.Looper
import android.os.Message
import android.support.v7.app.AppCompatActivity
import android.support.v7.widget.Toolbar
import android.widget.ListView
import kotlinx.android.synthetic.main.activity_chat.*
import ltd.evilcorp.atox.MessageModel
import ltd.evilcorp.atox.MessagesAdapter
import ltd.evilcorp.atox.R
import ltd.evilcorp.atox.Sender
import kotlinx.android.synthetic.main.contact_list_view_item.*
import ltd.evilcorp.atox.*
 
class ChatActivity : AppCompatActivity() {
private val messages = ArrayList<MessageModel>()
@@ -17,15 +18,20 @@ class ChatActivity : AppCompatActivity() {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_chat)
 
messages.add(MessageModel("hello", Sender.Received))
messages.add(MessageModel("how are you", Sender.Received))
messages.add(MessageModel("I'm good, thanks.", Sender.Sent))
 
val adapter = MessagesAdapter(this, messages)
val messageView = findViewById<ListView>(R.id.messages)
messageView.adapter = adapter
 
send.setOnClickListener {
val friendNumber: Int = intent.getIntExtra("friendNumber", 0)
 
val sendMsg = Message()
sendMsg.what = ToxThread.msgSendMsg
sendMsg.obj = outgoingMessage.text.toString()
sendMsg.arg1 = friendNumber
 
App.toxThread.handler.sendMessage(sendMsg)
 
messages.add(MessageModel(outgoingMessage.text.toString(), Sender.Sent))
adapter.notifyDataSetChanged()
outgoingMessage.text.clear()
 
app/src/main/java/ltd/evilcorp/atox/activity/ContactListActivity.kt added: 61, removed: 27, total 34
@@ -13,6 +13,7 @@ import android.widget.AdapterView
import android.widget.ArrayAdapter
import android.widget.ListView
import kotlinx.android.synthetic.main.contact_list_view_item.view.*
import ltd.evilcorp.atox.App
import ltd.evilcorp.atox.ContactAdapter
import ltd.evilcorp.atox.ContactModel
import ltd.evilcorp.atox.R
@@ -24,29 +25,32 @@ class ContactListActivity : AppCompatActivity() {
setContentView(R.layout.activity_contact_list)
 
val listView = findViewById<ListView>(R.id.contactList)
val contacts = ArrayList<ContactModel>()
contacts.add(
App.contacts.add(
ContactModel(
"EchoBot",
"76518406F6A9F2217E8DC487CC783C25CC16A15EB36FF32E335A235342C48A39218F515C39A6",
"18:30"
"18:30",
0
)
)
contacts.add(
App.contacts.add(
ContactModel(
"Also EchoBot",
"76518406F6A9F2217E8DC487CC783C25CC16A15EB36FF32E335A235342C48A39218F515C39A6",
"Dec 31"
"Dec 31",
0
)
)
contacts.add(
App.contacts.add(
ContactModel(
"EchoBot 3: Reckoning",
"76518406F6A9F2217E8DC487CC783C25CC16A15EB36FF32E335A235342C48A39218F515C39A6",
"23.09.17"
"23.09.17",
0
)
)
val adapter = ContactAdapter(this, contacts)
 
val adapter = ContactAdapter(this, App.contacts)
listView.adapter = adapter
 
val drawer = findViewById<DrawerLayout>(R.id.drawerLayout)
@@ -66,11 +70,12 @@ class ContactListActivity : AppCompatActivity() {
menu.setOnItemClickListener { _: AdapterView<*>, _: View, _: Int, id: Long ->
when (id) {
0L -> {
contacts.add(
App.contacts.add(
ContactModel(
"new EchoBot ${Random.nextInt(-1000, 1000)}",
"76518406F6A9F2217E8DC487CC783C25CC16A15EB36FF32E335A235342C48A39218F515C39A6",
"Never"
"Never",
0
)
)
adapter.notifyDataSetChanged()
@@ -106,6 +111,17 @@ class ContactListActivity : AppCompatActivity() {
fun openChat(view: View) {
val intent = Intent(this, ChatActivity::class.java)
intent.putExtra("username", view.name.text)
 
//TODO(endoffile78) figure out a better way to get the friend number
var friendNumber = 0
App.contacts.forEach() lit@{
if (it.name == view.name.text) {
friendNumber = it.friendNumber
return@lit // break
}
}
 
intent.putExtra("friendNumber", friendNumber)
startActivity(intent)
}
}