From b7f3379d7360b9c70050bd27fbc2e8523133a82b Mon Sep 17 00:00:00 2001 From: Juha Heinanen Date: Wed, 20 Nov 2019 05:27:23 +0200 Subject: [PATCH] - More work on character avatars. --- .../com/tutpro/baresip/CallListAdapter.kt | 27 ++++++++++++--- .../main/kotlin/com/tutpro/baresip/CallRow.kt | 2 +- .../com/tutpro/baresip/CallsActivity.kt | 33 ++++++------------ .../com/tutpro/baresip/ChatListAdapter.kt | 22 ++++++------ .../main/kotlin/com/tutpro/baresip/Contact.kt | 3 +- .../com/tutpro/baresip/ContactActivity.kt | 15 ++++++-- .../com/tutpro/baresip/ContactListAdapter.kt | 14 ++++---- .../com/tutpro/baresip/MessageListAdapter.kt | 24 ++++++------- .../main/kotlin/com/tutpro/baresip/Utils.kt | 3 +- app/src/main/res/layout/activity_calls.xml | 4 ++- app/src/main/res/layout/call_row.xml | 34 +++++++++++++++---- app/src/main/res/layout/contact_row.xml | 2 +- 12 files changed, 109 insertions(+), 74 deletions(-) diff --git a/app/src/main/kotlin/com/tutpro/baresip/CallListAdapter.kt b/app/src/main/kotlin/com/tutpro/baresip/CallListAdapter.kt index b5f77928..e5ab0c53 100644 --- a/app/src/main/kotlin/com/tutpro/baresip/CallListAdapter.kt +++ b/app/src/main/kotlin/com/tutpro/baresip/CallListAdapter.kt @@ -1,6 +1,7 @@ package com.tutpro.baresip import android.content.Context +import android.graphics.drawable.GradientDrawable import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -8,18 +9,34 @@ import android.widget.ArrayAdapter import android.widget.ImageView import android.widget.LinearLayout import android.widget.TextView + import java.util.* class CallListAdapter(private val cxt: Context, private val rows: ArrayList) : ArrayAdapter(cxt, R.layout.call_row, rows) { override fun getView(position: Int, convertView: View?, parent: ViewGroup): View { - val row = rows[position] + val callRow = rows[position] val inflater = context.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater val rowView = inflater.inflate(R.layout.call_row, parent, false) + val avatarView = rowView.findViewById(R.id.avatar) as TextView + val avatarBackground = avatarView.background as GradientDrawable + val contact = ContactsActivity.findContact(callRow.peerUri) + val peer: String + if (contact != null) { + peer = contact.name + avatarBackground.setColor(contact.color) + } else { + if (Utils.uriHostPart(callRow.peerUri) == Utils.uriHostPart(callRow.aor)) + peer = Utils.uriUserPart(callRow.peerUri) + else + peer = Utils.uriAor(callRow.peerUri) + avatarBackground.setColor(Utils.randomColor()) + } + avatarView.text = "${peer[0]}" val directions = rowView.findViewById(R.id.directions) as LinearLayout var count = 1 - for (d in row.directions) { + for (d in callRow.directions) { if (count > 3) { val etc = rowView.findViewById(R.id.etc) as TextView etc.text = "..." @@ -35,13 +52,13 @@ class CallListAdapter(private val cxt: Context, private val rows: ArrayList() val indexes = ArrayList() diff --git a/app/src/main/kotlin/com/tutpro/baresip/CallsActivity.kt b/app/src/main/kotlin/com/tutpro/baresip/CallsActivity.kt index 7b296ab5..6e5fe490 100644 --- a/app/src/main/kotlin/com/tutpro/baresip/CallsActivity.kt +++ b/app/src/main/kotlin/com/tutpro/baresip/CallsActivity.kt @@ -6,16 +6,15 @@ import android.content.Intent import android.os.Bundle import android.support.v7.app.AlertDialog import android.support.v7.app.AppCompatActivity +import android.text.format.DateUtils.isToday import android.view.Menu import android.view.MenuItem import android.widget.AdapterView import android.widget.ListView import android.widget.TextView -import java.text.SimpleDateFormat import java.util.ArrayList -import java.util.Calendar -import java.util.GregorianCalendar +import java.text.DateFormat class CallsActivity : AppCompatActivity() { @@ -46,7 +45,7 @@ class CallsActivity : AppCompatActivity() { listView.isLongClickable = true listView.onItemClickListener = AdapterView.OnItemClickListener { _, _, pos, _ -> - val peerUri = uaHistory[pos].peerURI + val peerUri = uaHistory[pos].peerUri var peerName = ContactsActivity.contactName(peerUri) if (peerName.startsWith("sip:")) peerName = Utils.friendlyUri(peerName, Utils.aorDomain(aor)) @@ -77,7 +76,7 @@ class CallsActivity : AppCompatActivity() { } listView.onItemLongClickListener = AdapterView.OnItemLongClickListener { _, _, pos, _ -> - val peerUri = uaHistory[pos].peerURI + val peerUri = uaHistory[pos].peerUri val peerName = ContactsActivity.contactName(peerUri) val dialogClickListener = DialogInterface.OnClickListener { _, which -> when (which) { @@ -194,7 +193,6 @@ class CallsActivity : AppCompatActivity() { } - private fun aorGenerateHistory(aor: String) { uaHistory.clear() for (i in BaresipService.callHistory.indices.reversed()) { @@ -211,18 +209,16 @@ class CallsActivity : AppCompatActivity() { direction = R.drawable.arrow_up_green else direction = R.drawable.arrow_up_red - if (uaHistory.isNotEmpty() && (uaHistory.last().peerURI == h.peerURI)) { + if (uaHistory.isNotEmpty() && (uaHistory.last().peerUri == h.peerURI)) { uaHistory.last().directions.add(direction) uaHistory.last().indexes.add(i) } else { - val time: String - if (isToday(h.time)) { - val fmt = SimpleDateFormat("HH:mm") - time = fmt.format(h.time.time) - } else { - val fmt = SimpleDateFormat("dd.MM") - time = fmt.format(h.time.time) - } + val fmt: DateFormat + if (isToday(h.time.timeInMillis)) + fmt = DateFormat.getTimeInstance(DateFormat.SHORT) + else + fmt = DateFormat.getDateInstance(DateFormat.SHORT) + val time = fmt.format(h.time.time) uaHistory.add(CallRow(h.aor, h.peerURI, direction, time, i)) } } @@ -235,11 +231,4 @@ class CallsActivity : AppCompatActivity() { uaHistory.removeAt(i) } - private fun isToday(time: GregorianCalendar): Boolean { - val now = GregorianCalendar() - return now.get(Calendar.YEAR) == time.get(Calendar.YEAR) && - now.get(Calendar.MONTH) == time.get(Calendar.MONTH) && - now.get(Calendar.DAY_OF_MONTH) == time.get(Calendar.DAY_OF_MONTH) - } - } diff --git a/app/src/main/kotlin/com/tutpro/baresip/ChatListAdapter.kt b/app/src/main/kotlin/com/tutpro/baresip/ChatListAdapter.kt index 2a27db2c..e8ca968f 100644 --- a/app/src/main/kotlin/com/tutpro/baresip/ChatListAdapter.kt +++ b/app/src/main/kotlin/com/tutpro/baresip/ChatListAdapter.kt @@ -14,8 +14,8 @@ import android.widget.LinearLayout import android.widget.RelativeLayout import android.widget.TextView -import java.text.SimpleDateFormat import java.util.* +import java.text.DateFormat class ChatListAdapter(private val cxt: Context, private var rows: ArrayList) : ArrayAdapter(cxt, R.layout.message, rows) { @@ -50,22 +50,22 @@ class ChatListAdapter(private val cxt: Context, private var rows: ArrayList 0) avatarView.text = "${name[0]}" setTitle(name) @@ -62,6 +65,11 @@ class ContactActivity : AppCompatActivity() { uOrI = index.toString() } + avatarView.setOnClickListener { view -> + color = Utils.randomColor() + (avatarView.background as GradientDrawable).setColor(color) + } + BaresipService.activities.add(0, "contact,$new,$uOrI") } @@ -132,6 +140,7 @@ class ContactActivity : AppCompatActivity() { } else { Contact.contacts()[index].uri = newUri Contact.contacts()[index].name = newName + Contact.contacts()[index].color = color } Contact.contacts().sortBy { Contact -> Contact.name } diff --git a/app/src/main/kotlin/com/tutpro/baresip/ContactListAdapter.kt b/app/src/main/kotlin/com/tutpro/baresip/ContactListAdapter.kt index 7862e501..680176b1 100644 --- a/app/src/main/kotlin/com/tutpro/baresip/ContactListAdapter.kt +++ b/app/src/main/kotlin/com/tutpro/baresip/ContactListAdapter.kt @@ -20,8 +20,8 @@ class ContactListAdapter(private val cxt: Context, private val rows: ArrayList(cxt, R.layout.contact_row, rows) { - override fun getView(pos: Int, convertView: View?, parent: ViewGroup): View { - val row = rows[pos] + override fun getView(position: Int, convertView: View?, parent: ViewGroup): View { + val row = rows[position] val inflater = context.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater val rowView = inflater.inflate(R.layout.contact_row, parent, false) val avatarView = rowView.findViewById(R.id.avatar) as TextView @@ -51,7 +51,7 @@ class ContactListAdapter(private val cxt: Context, private val rows: ArrayList when (which) { DialogInterface.BUTTON_POSITIVE -> { - Contact.contacts().removeAt(pos) + Contact.contacts().removeAt(position) Contact.save() this.notifyDataSetChanged() } @@ -82,7 +82,7 @@ class ContactListAdapter(private val cxt: Context, private val rows: ArrayList) : ArrayAdapter(cxt, R.layout.message, rows) { @@ -44,23 +43,22 @@ class MessageListAdapter(private val cxt: Context, private val rows: ArrayList + android:layout_below="@id/account" + android:divider="#00000000" + android:dividerHeight="10dp" > diff --git a/app/src/main/res/layout/call_row.xml b/app/src/main/res/layout/call_row.xml index c70e101e..28fad2a3 100644 --- a/app/src/main/res/layout/call_row.xml +++ b/app/src/main/res/layout/call_row.xml @@ -8,29 +8,47 @@ android:layout_marginTop="0dp" android:descendantFocusability="blocksDescendants" > + + + + android:layout_toEndOf="@id/avatar" + android:layout_marginStart="5dp" + android:layout_centerVertical="true" > + + android:text="" > + + android:text="" > + + android:text="" > + diff --git a/app/src/main/res/layout/contact_row.xml b/app/src/main/res/layout/contact_row.xml index 6d3d8cbf..3cf171a1 100644 --- a/app/src/main/res/layout/contact_row.xml +++ b/app/src/main/res/layout/contact_row.xml @@ -25,7 +25,7 @@ android:layout_height="wrap_content" android:layout_centerVertical="true" android:layout_toEndOf="@id/avatar" - android:layout_marginStart="10dp" + android:layout_marginStart="5dp" android:textSize="20sp" android:layout_marginBottom="6dp">