From e72c587fa74d9ebcdaa6d79101024692db528616 Mon Sep 17 00:00:00 2001 From: Juha Heinanen Date: Mon, 18 Nov 2019 14:46:05 +0200 Subject: [PATCH] - Started work on letter based avatars. --- .../com/tutpro/baresip/ChatListAdapter.kt | 55 +++++++------- .../main/kotlin/com/tutpro/baresip/Contact.kt | 4 +- .../com/tutpro/baresip/ContactActivity.kt | 19 ++++- .../com/tutpro/baresip/ContactListAdapter.kt | 6 ++ .../com/tutpro/baresip/ContactsActivity.kt | 8 +++ .../com/tutpro/baresip/MessageListAdapter.kt | 4 +- .../main/kotlin/com/tutpro/baresip/Utils.kt | 9 +++ app/src/main/res/drawable/circle.xml | 3 + .../{peer_bg.xml => message_in_bg.xml} | 2 +- .../{you_bg.xml => message_out_bg.xml} | 2 +- app/src/main/res/layout/activity_contact.xml | 16 ++++- app/src/main/res/layout/activity_contacts.xml | 4 +- app/src/main/res/layout/chat.xml | 47 ------------ app/src/main/res/layout/chat_row.xml | 72 +++++++++++++++++++ app/src/main/res/layout/contact_row.xml | 16 +++++ 15 files changed, 184 insertions(+), 83 deletions(-) create mode 100644 app/src/main/res/drawable/circle.xml rename app/src/main/res/drawable/{peer_bg.xml => message_in_bg.xml} (77%) rename app/src/main/res/drawable/{you_bg.xml => message_out_bg.xml} (78%) delete mode 100644 app/src/main/res/layout/chat.xml create mode 100644 app/src/main/res/layout/chat_row.xml diff --git a/app/src/main/kotlin/com/tutpro/baresip/ChatListAdapter.kt b/app/src/main/kotlin/com/tutpro/baresip/ChatListAdapter.kt index 29e07ac2..2a27db2c 100644 --- a/app/src/main/kotlin/com/tutpro/baresip/ChatListAdapter.kt +++ b/app/src/main/kotlin/com/tutpro/baresip/ChatListAdapter.kt @@ -3,6 +3,7 @@ package com.tutpro.baresip import android.content.Context import android.graphics.Color import android.graphics.Typeface +import android.graphics.drawable.GradientDrawable import android.support.v4.content.ContextCompat import android.text.format.DateUtils.isToday import android.view.LayoutInflater @@ -10,6 +11,7 @@ import android.view.View import android.view.ViewGroup import android.widget.ArrayAdapter import android.widget.LinearLayout +import android.widget.RelativeLayout import android.widget.TextView import java.text.SimpleDateFormat @@ -21,40 +23,43 @@ class ChatListAdapter(private val cxt: Context, private var rows: ArrayList") // Currently no need to make baresip aware of the contact // Api.contact_add("\"$name\" $uri") - BaresipService.contacts.add(Contact(name, uri)) + BaresipService.contacts.add(Contact(name, uri, Utils.randomColor())) } } return true diff --git a/app/src/main/kotlin/com/tutpro/baresip/ContactActivity.kt b/app/src/main/kotlin/com/tutpro/baresip/ContactActivity.kt index e414f02b..e95110c0 100644 --- a/app/src/main/kotlin/com/tutpro/baresip/ContactActivity.kt +++ b/app/src/main/kotlin/com/tutpro/baresip/ContactActivity.kt @@ -2,6 +2,9 @@ package com.tutpro.baresip import android.app.Activity import android.content.Intent +import android.graphics.drawable.Drawable +import android.graphics.drawable.GradientDrawable +import android.graphics.drawable.ShapeDrawable import android.os.Bundle import android.support.v7.app.AppCompatActivity import android.view.Menu @@ -10,17 +13,21 @@ import android.widget.* class ContactActivity : AppCompatActivity() { + lateinit var avatarView: TextView lateinit var nameView: EditText lateinit var uriView: EditText - internal var index = 0 internal var new = false + private var index = 0 + private var color = Utils.randomColor() + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_contact) + avatarView = findViewById(R.id.Avatar) as TextView nameView = findViewById(R.id.Name) as EditText uriView = findViewById(R.id.Uri) as EditText @@ -28,7 +35,9 @@ class ContactActivity : AppCompatActivity() { val uOrI: String if (new) { - setTitle(getString(R.string.new_contact)) + title = getString(R.string.new_contact) + val background = avatarView.background as GradientDrawable + background.setColor(color) nameView.setText("") nameView.hint = getString(R.string.contact_name) nameView.setSelection(nameView.text.length) @@ -43,6 +52,10 @@ class ContactActivity : AppCompatActivity() { } else { index = intent.getIntExtra("index", 0) val name = Contact.contacts()[index].name + val background = avatarView.background as GradientDrawable + background.setColor(Contact.contacts()[index].color) + if (name.length > 0) + avatarView.text = "${name[0]}" setTitle(name) nameView.setText(name) uriView.setText(Contact.contacts()[index].uri) @@ -114,7 +127,7 @@ class ContactActivity : AppCompatActivity() { BaresipService.activities.removeAt(0) return true } else { - Contact.contacts().add(Contact(newName, newUri)) + Contact.contacts().add(Contact(newName, newUri, color)) } } else { Contact.contacts()[index].uri = newUri diff --git a/app/src/main/kotlin/com/tutpro/baresip/ContactListAdapter.kt b/app/src/main/kotlin/com/tutpro/baresip/ContactListAdapter.kt index f739f132..7862e501 100644 --- a/app/src/main/kotlin/com/tutpro/baresip/ContactListAdapter.kt +++ b/app/src/main/kotlin/com/tutpro/baresip/ContactListAdapter.kt @@ -4,6 +4,7 @@ import android.app.Activity import android.content.Context import android.content.DialogInterface import android.content.Intent +import android.graphics.drawable.GradientDrawable import android.os.Bundle import android.support.v7.app.AlertDialog import android.view.LayoutInflater @@ -23,6 +24,11 @@ class ContactListAdapter(private val cxt: Context, private val rows: ArrayList 0) + avatarView.text = "${row.name[0]}" val nameView = rowView.findViewById(R.id.contactName) as TextView nameView.text = row.name nameView.textSize = 20f diff --git a/app/src/main/kotlin/com/tutpro/baresip/ContactsActivity.kt b/app/src/main/kotlin/com/tutpro/baresip/ContactsActivity.kt index 229aa66e..d6a98d43 100644 --- a/app/src/main/kotlin/com/tutpro/baresip/ContactsActivity.kt +++ b/app/src/main/kotlin/com/tutpro/baresip/ContactsActivity.kt @@ -87,6 +87,14 @@ class ContactsActivity : AppCompatActivity() { return name } + fun findContact(uri: String): Contact? { + for (c in Contact.contacts()) + if ((Utils.uriUserPart(c.uri) == Utils.uriUserPart(uri)) && + (Utils.uriHostPart(c.uri) == Utils.uriHostPart(uri))) + return c + return null + } + fun nameExists(name: String, ignoreCase: Boolean): Boolean { for (c in Contact.contacts()) if (c.name.equals(name, ignoreCase = ignoreCase)) return true diff --git a/app/src/main/kotlin/com/tutpro/baresip/MessageListAdapter.kt b/app/src/main/kotlin/com/tutpro/baresip/MessageListAdapter.kt index 10281968..ad2982f3 100644 --- a/app/src/main/kotlin/com/tutpro/baresip/MessageListAdapter.kt +++ b/app/src/main/kotlin/com/tutpro/baresip/MessageListAdapter.kt @@ -27,11 +27,11 @@ class MessageListAdapter(private val cxt: Context, private val rows: ArrayList"))) @@ -510,4 +515,8 @@ object Utils { Log.d("Baresip", "Dumping intent finish") } + fun randomColor(): Int { + val rnd = Random() + return Color.argb(255, rnd.nextInt(256), rnd.nextInt(256), rnd.nextInt(256)) + } } diff --git a/app/src/main/res/drawable/circle.xml b/app/src/main/res/drawable/circle.xml new file mode 100644 index 00000000..55866b8f --- /dev/null +++ b/app/src/main/res/drawable/circle.xml @@ -0,0 +1,3 @@ + + + diff --git a/app/src/main/res/drawable/peer_bg.xml b/app/src/main/res/drawable/message_in_bg.xml similarity index 77% rename from app/src/main/res/drawable/peer_bg.xml rename to app/src/main/res/drawable/message_in_bg.xml index 90d243d9..e826fd3e 100644 --- a/app/src/main/res/drawable/peer_bg.xml +++ b/app/src/main/res/drawable/message_in_bg.xml @@ -4,7 +4,7 @@ - + diff --git a/app/src/main/res/drawable/you_bg.xml b/app/src/main/res/drawable/message_out_bg.xml similarity index 78% rename from app/src/main/res/drawable/you_bg.xml rename to app/src/main/res/drawable/message_out_bg.xml index c5005e43..03aa2875 100644 --- a/app/src/main/res/drawable/you_bg.xml +++ b/app/src/main/res/drawable/message_out_bg.xml @@ -4,7 +4,7 @@ - + diff --git a/app/src/main/res/layout/activity_contact.xml b/app/src/main/res/layout/activity_contact.xml index b4334950..0e0ce374 100644 --- a/app/src/main/res/layout/activity_contact.xml +++ b/app/src/main/res/layout/activity_contact.xml @@ -8,7 +8,20 @@ android:paddingRight="16dp" android:paddingTop="16dp" android:paddingBottom="24dp" - android:orientation="vertical"> + android:orientation="vertical" > + + + diff --git a/app/src/main/res/layout/activity_contacts.xml b/app/src/main/res/layout/activity_contacts.xml index 2e265002..d20549ab 100644 --- a/app/src/main/res/layout/activity_contacts.xml +++ b/app/src/main/res/layout/activity_contacts.xml @@ -13,7 +13,9 @@ android:id="@+id/contacts" android:layout_width="fill_parent" android:layout_height="match_parent" - android:layout_above="@id/plusButton" > + android:layout_above="@id/plusButton" + android:divider="#00000000" + android:dividerHeight="10dp" > - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/chat_row.xml b/app/src/main/res/layout/chat_row.xml new file mode 100644 index 00000000..c73a2277 --- /dev/null +++ b/app/src/main/res/layout/chat_row.xml @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/contact_row.xml b/app/src/main/res/layout/contact_row.xml index 226e4eca..6d3d8cbf 100644 --- a/app/src/main/res/layout/contact_row.xml +++ b/app/src/main/res/layout/contact_row.xml @@ -5,11 +5,27 @@ android:layout_height="wrap_content" android:orientation="horizontal" > + + +