Browse Source

Modified contacts and addressbook

chat^2
N1CK145 4 years ago
parent
commit
6f8961b70b
  1. 4
      app/build.gradle
  2. 45
      app/src/main/java/org/myhush/silentdragon/Addressbook.kt
  3. 2
      app/src/main/java/org/myhush/silentdragon/DataModel.kt
  4. 57
      app/src/main/java/org/myhush/silentdragon/MainActivity.kt
  5. 2
      app/src/main/java/org/myhush/silentdragon/SendActivity.kt
  6. 4
      app/src/main/java/org/myhush/silentdragon/chat/AddContactActivity.kt
  7. 27
      app/src/main/java/org/myhush/silentdragon/chat/Addressbook.kt
  8. 16
      app/src/main/java/org/myhush/silentdragon/chat/ChatActivity.kt
  9. 3
      app/src/main/java/org/myhush/silentdragon/chat/ChatItemFragment.kt
  10. 19
      app/src/main/java/org/myhush/silentdragon/chat/ConversationActivity.kt
  11. 17
      app/src/main/res/layout/activity_conversation.xml
  12. 1
      app/src/main/res/layout/fragment_chat_item.xml

4
app/build.gradle

@ -24,7 +24,7 @@ android {
vectorDrawables.useSupportLibrary = true
}
signingConfigs {
/*signingConfigs {
release {
storeFile file(secretProperties["store_file_location"])
keyAlias secretProperties["key_alias"]
@ -39,7 +39,7 @@ android {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}*/
}
dependencies {

45
app/src/main/java/org/myhush/silentdragon/Addressbook.kt

@ -0,0 +1,45 @@
package org.myhush.silentdragon
import org.myhush.silentdragon.chat.Message
object Addressbook {
class Contact {
var fullname = ""
var nickname = ""
var address = ""
val messageList = ArrayList<Message>()
constructor(fullname: String, nickname: String) {
this.fullname = fullname
this.nickname = nickname
}
constructor(fullname: String, nickname: String, address: String) {
this.fullname = fullname
this.nickname = nickname
this.address = address
}
}
val contactList = ArrayList<Contact>()
fun addContact(fullname: String, nickname: String) {
contactList.add(Contact(fullname, nickname))
}
fun addContact(fullname: String, nickname: String, address: String) {
contactList.add(Contact(fullname, nickname, address))
}
fun addContact(contact: Contact){
contactList.add(contact)
}
fun findContactByAddress(address: String): Contact? {
contactList.forEach {
if(it.address == address)
return it
}
return null
}
}

2
app/src/main/java/org/myhush/silentdragon/DataModel.kt

@ -10,6 +10,7 @@ import com.beust.klaxon.json
import okhttp3.WebSocket
import org.libsodium.jni.NaCl
import org.libsodium.jni.Sodium
import org.myhush.silentdragon.chat.Message
import java.math.BigInteger
object DataModel {
@ -20,6 +21,7 @@ object DataModel {
class TransactionItem(val type: String, val datetime: Long, val amount: String, val memo: String?,
val addr: String, val txid: String?, val confirmations: Long)
var mainResponseData : MainResponse? = null
var transactions : List<TransactionItem>? = null

57
app/src/main/java/org/myhush/silentdragon/MainActivity.kt

@ -75,10 +75,10 @@ class MainActivity : AppCompatActivity(),
if(DataModel.selectedCurrency == "BTC")
Toast.makeText(applicationContext, "1 HUSH = ${DataModel.currencySymbols[DataModel.selectedCurrency]}${DecimalFormat(" #,##0.00000000")
.format(DataModel.currencyValues[DataModel.selectedCurrency])}", Toast.LENGTH_LONG).show()
else(
else
Toast.makeText(applicationContext, "1 HUSH = ${DataModel.currencySymbols[DataModel.selectedCurrency]}${DecimalFormat("#,##0.00")
.format(DataModel.currencyValues[DataModel.selectedCurrency])}", Toast.LENGTH_LONG).show()
)
.format(DataModel.currencyValues[DataModel.selectedCurrency])}", Toast.LENGTH_LONG).show()
}
bottomNav.setOnNavigationItemSelectedListener {
@ -108,6 +108,17 @@ class MainActivity : AppCompatActivity(),
loadSharedPref()
updateUI(false)
////////////////////////////
// CREATE SAMPLE CONTACTS //
Addressbook.addContact("", "N1CK145", "zs1hxxperc468hw5pnt07eg3762skvsdge7qy5p05z8fxuhxfu6n02zqnlgcsqu5xpcdzy62eehjgq")
Addressbook.addContact("", "Denio", "zDenio")
Addressbook.addContact("", "Max Mustermann", "zMaxMust")
// //
////////////////////////////
}
private fun loadSharedPref() {
@ -231,14 +242,17 @@ class MainActivity : AppCompatActivity(),
val unconfirmed = txns.filter { t -> t.confirmations == 0L }
if (unconfirmed.isNotEmpty()) {
for (tx in unconfirmed) {
fragTx.add(
txList.id ,
UnconfirmedTxItemFragment.newInstance(
Klaxon().toJsonString(tx),
""
),
"tag1"
)
if(tx.memo?.length == 0){
fragTx.add(
txList.id ,
UnconfirmedTxItemFragment.newInstance(
Klaxon().toJsonString(tx),
""
),
"tag1"
)
}
}
}
@ -247,15 +261,18 @@ class MainActivity : AppCompatActivity(),
if (confirmed.isNotEmpty()) {
var oddeven = "odd"
for (tx in confirmed) {
fragTx.add(
txList.id,
TransactionItemFragment.newInstance(
Klaxon().toJsonString(tx),
oddeven
),
"tag1"
)
oddeven = if (oddeven == "odd") "even" else "odd"
if(tx.memo?.length == 0){
fragTx.add(
txList.id,
TransactionItemFragment.newInstance(
Klaxon().toJsonString(tx),
oddeven
),
"tag1"
)
oddeven = if (oddeven == "odd") "even" else "odd"
}
}
}
fragTx.commitAllowingStateLoss()

2
app/src/main/java/org/myhush/silentdragon/SendActivity.kt

@ -67,9 +67,7 @@ class SendActivity : AppCompatActivity() {
if (DataModel.selectedCurrency == "BTC")
amountUSD.text = "${DataModel.currencySymbols[DataModel.selectedCurrency]} " + DecimalFormat("0.00000000").format(0)
else
{
amountUSD.text = "${DataModel.currencySymbols[DataModel.selectedCurrency]} " + DecimalFormat("0.00").format(0)
}
textViewFee.text = DecimalFormat("0.0000").format(0.0001) + " HUSH"

4
app/src/main/java/org/myhush/silentdragon/chat/AddContactActivity.kt

@ -4,6 +4,7 @@ import android.app.AlertDialog
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import kotlinx.android.synthetic.main.activity_add_contact.*
import org.myhush.silentdragon.Addressbook
import org.myhush.silentdragon.R
class AddContactActivity : AppCompatActivity() {
@ -18,7 +19,8 @@ class AddContactActivity : AppCompatActivity() {
var fullname = editText_FullName.text.toString()
var zAddr = editTextZAddress.text.toString()
Addressbook.contactList.add(Addressbook.Contact(fullname, nickName, zAddr))
Addressbook.addContact(fullname, nickName, zAddr)
this.finish()
}
}

27
app/src/main/java/org/myhush/silentdragon/chat/Addressbook.kt

@ -1,27 +0,0 @@
package org.myhush.silentdragon.chat
object Addressbook {
class Contact {
var addressList: ArrayList<String> = ArrayList()
val messageList: ArrayList<Message> = ArrayList()
var fullname = ""
var nickname = ""
constructor(fullname: String, nickname: String){
this.fullname = fullname
this.nickname = nickname
}
constructor(fullname: String, nickname: String, address: String){
this.fullname = fullname
this.nickname = nickname
this.addressList.add(address)
}
constructor(fullname: String, nickname: String, addressList: ArrayList<String>){
this.fullname = fullname
this.nickname = nickname
this.addressList = addressList
}
}
val contactList = ArrayList<Contact>()
}

16
app/src/main/java/org/myhush/silentdragon/chat/ChatActivity.kt

@ -6,11 +6,8 @@ import android.support.v4.app.FragmentTransaction
import android.support.v7.app.AppCompatActivity
import android.view.Menu
import android.view.MenuItem
import android.view.View
import android.widget.LinearLayout
import android.widget.TableLayout
import kotlinx.android.synthetic.main.activity_chat.*
import kotlinx.android.synthetic.main.content_chat_list.view.*
import org.myhush.silentdragon.*
class ChatActivity : AppCompatActivity() {
@ -19,7 +16,7 @@ class ChatActivity : AppCompatActivity() {
setContentView(R.layout.activity_chat)
initListener()
restoreLastChats()
refresh()
swiperefreshChat.setOnRefreshListener {
refresh()
@ -27,15 +24,6 @@ class ChatActivity : AppCompatActivity() {
}
}
private fun restoreLastChats() {
DataModel.transactions?.forEach { tx ->
if (!tx.memo.isNullOrEmpty()){
// ADD CHAT BY ADDRESS
}
}
refresh()
}
private fun initListener(){
nav_view.setOnNavigationItemSelectedListener {
when(it.itemId) {
@ -76,7 +64,7 @@ class ChatActivity : AppCompatActivity() {
fragment.fullname = contact.fullname
fragment.nickname = contact.nickname
fragment.lastMessage = contact.addressList[0]
fragment.contactAddress = contact.address
fragTx.add(R.id.ChatTable, fragment)
fragTx.commit()

3
app/src/main/java/org/myhush/silentdragon/chat/ChatItemFragment.kt

@ -7,12 +7,14 @@ import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.TextView
import kotlinx.android.synthetic.main.content_receive.*
import org.myhush.silentdragon.R
class ChatItemFragment : Fragment() {
var fullname: String = ""
var nickname: String = ""
var lastMessage: String = ""
var contactAddress: String = ""
var v: View? = null
override fun onCreateView (inflater: LayoutInflater, container: ViewGroup?,
@ -30,6 +32,7 @@ class ChatItemFragment : Fragment() {
val intent = Intent(activity, ConversationActivity::class.java)
intent.putExtra("displayName", nickname) // Send some information
intent.putExtra("contactAddress", contactAddress)
startActivity(intent)
}

19
app/src/main/java/org/myhush/silentdragon/chat/ConversationActivity.kt

@ -1,11 +1,9 @@
package org.myhush.silentdragon.chat
import android.content.Intent
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.support.v4.app.FragmentTransaction
import android.widget.EditText
import android.widget.ImageButton
import android.widget.TextView
import kotlinx.android.synthetic.main.activity_conversation.*
import org.myhush.silentdragon.*
@ -17,28 +15,25 @@ class ConversationActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_conversation)
val address = intent.extras.getString("contactAddress")
displayName = intent.extras.getString("displayName")
contact = Addressbook.findContactByAddress(address)
findViewById<TextView>(R.id.textViewContactName2).text = displayName
findViewById<TextView>(R.id.textView_zAddress).text = contact?.address
buttonSend.setOnClickListener{
sendMessage()
}
contact = Addressbook.contactList[0] // FOR TESTING!!!
restoreChat()
}
private fun sendMessage(){
// FOR TESTING!!!
val memo = findViewById<EditText>(R.id.userInput).text.toString()
findViewById<EditText>(R.id.userInput).text.clear()
var tx = DataModel.TransactionItem("send", 99, "0.00", memo, contact!!.addressList[0], "asdasdasd", 0)
val m = Message("addr", tx)
attachMessage(m)
m.messageType = MessageType.RECIEVE
attachMessage(m)
val memo = findViewById<TextView>(R.id.userInput).text.toString()
contact!!.address
}
private fun restoreChat() {

17
app/src/main/res/layout/activity_conversation.xml

@ -6,6 +6,18 @@
android:layout_height="match_parent"
tools:context=".conversation_item_recive" >
<TextView
android:id="@+id/textView_zAddress"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:background="#0AFFFFFF"
android:text="zAddress"
android:textAlignment="center"
android:textSize="8sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/constraintLayout4" />
<android.support.constraint.ConstraintLayout
android:id="@+id/constraintLayout4"
android:layout_width="0dp"
@ -40,9 +52,11 @@
app:layout_constraintTop_toTopOf="parent"
tools:src="@mipmap/ic_launcher_dragon_foreground"
tools:visibility="visible" />
</android.support.constraint.ConstraintLayout>
<ScrollView
android:id="@+id/scrollView3"
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_constraintBottom_toTopOf="@+id/constraintLayout3"
@ -54,7 +68,7 @@
android:id="@+id/MessageList"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"/>
android:orientation="vertical" />
</ScrollView>
<android.support.constraint.ConstraintLayout
@ -88,6 +102,7 @@
app:layout_constraintEnd_toStartOf="@+id/buttonSend"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</android.support.constraint.ConstraintLayout>
</android.support.constraint.ConstraintLayout>

1
app/src/main/res/layout/fragment_chat_item.xml

@ -76,6 +76,7 @@
android:text="10min"
android:textColor="#fff"
android:textSize="10sp"
android:visibility="invisible"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />

Loading…
Cancel
Save