From 4453c45ff490c805bb97c98b8d0344e1fc1ef91f Mon Sep 17 00:00:00 2001 From: Juha Heinanen Date: Tue, 7 Aug 2018 16:13:17 +0300 Subject: [PATCH] improved contact list by adding edit button and made possible to click contact for a call or message --- .../com/tutpro/baresip/CallsActivity.kt | 3 +- .../com/tutpro/baresip/ContactListAdapter.kt | 37 ++++++++++++++++++- .../com/tutpro/baresip/ContactsActivity.kt | 4 +- .../kotlin/com/tutpro/baresip/MainActivity.kt | 11 +++--- app/src/main/res/layout/account_row.xml | 2 +- app/src/main/res/layout/activity_history.xml | 2 +- app/src/main/res/layout/contact_row.xml | 17 ++++++++- 7 files changed, 63 insertions(+), 13 deletions(-) diff --git a/app/src/main/kotlin/com/tutpro/baresip/CallsActivity.kt b/app/src/main/kotlin/com/tutpro/baresip/CallsActivity.kt index 717f981e..39e78e51 100644 --- a/app/src/main/kotlin/com/tutpro/baresip/CallsActivity.kt +++ b/app/src/main/kotlin/com/tutpro/baresip/CallsActivity.kt @@ -23,7 +23,6 @@ import java.util.GregorianCalendar class CallsActivity : AppCompatActivity() { internal var uaHistory = ArrayList() - internal var aor: String = "" public override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -31,7 +30,7 @@ class CallsActivity : AppCompatActivity() { val listview = findViewById(R.id.history) as ListView - aor = intent.extras.getString("aor") + val aor = intent.extras.getString("aor") aorGenerateHistory(aor) val adapter = CallListAdapter(this, uaHistory) diff --git a/app/src/main/kotlin/com/tutpro/baresip/ContactListAdapter.kt b/app/src/main/kotlin/com/tutpro/baresip/ContactListAdapter.kt index dd62f4b1..5976ae23 100644 --- a/app/src/main/kotlin/com/tutpro/baresip/ContactListAdapter.kt +++ b/app/src/main/kotlin/com/tutpro/baresip/ContactListAdapter.kt @@ -2,6 +2,7 @@ package com.tutpro.baresip import android.app.Activity import android.content.Context +import android.content.DialogInterface import android.content.Intent import android.os.Bundle import android.support.v7.app.AlertDialog @@ -9,13 +10,15 @@ import android.util.Log import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import android.widget.AdapterView import android.widget.ArrayAdapter import android.widget.ImageButton import android.widget.TextView import java.util.* -class ContactListAdapter(private val cxt: Context, private val rows: ArrayList) : +class ContactListAdapter(private val cxt: Context, private val rows: ArrayList, + private val aor: String) : ArrayAdapter(cxt, R.layout.contact_row, rows) { override fun getView(position: Int, convertView: View?, parent: ViewGroup): View { @@ -26,7 +29,37 @@ class ContactListAdapter(private val cxt: Context, private val rows: ArrayList + if (aor != "") { + nameView.setOnClickListener {_ -> + val i = Intent(cxt, MessageActivity::class.java) + val b = Bundle() + b.putString("aor", aor) + b.putString("peer", ContactsActivity.contacts[position].uri) + i.putExtras(b) + (cxt as Activity).startActivityForResult(i, MainActivity.MESSAGE_CODE) + } + } + nameView.setOnLongClickListener { _ -> + val dialogClickListener = DialogInterface.OnClickListener { _, which -> + when (which) { + DialogInterface.BUTTON_NEGATIVE -> { + ContactsActivity.contacts.removeAt(position) + ContactsActivity.saveContacts() + this.notifyDataSetChanged() + } + DialogInterface.BUTTON_POSITIVE -> { + } + } + } + val builder = AlertDialog.Builder(cxt, R.style.Theme_AppCompat) + builder.setMessage("Do you want to delete ${ContactsActivity.contacts[position].name}?") + .setPositiveButton("Cancel", dialogClickListener) + .setNegativeButton("Delete Contact", dialogClickListener) + .show() + true + } + val actionView = rowView.findViewById(R.id.action) as ImageButton + actionView.setOnClickListener { _ -> val i = Intent(cxt, ContactActivity::class.java) val b = Bundle() b.putBoolean("new", false) diff --git a/app/src/main/kotlin/com/tutpro/baresip/ContactsActivity.kt b/app/src/main/kotlin/com/tutpro/baresip/ContactsActivity.kt index ddbcf1d8..0583dd15 100644 --- a/app/src/main/kotlin/com/tutpro/baresip/ContactsActivity.kt +++ b/app/src/main/kotlin/com/tutpro/baresip/ContactsActivity.kt @@ -23,8 +23,10 @@ class ContactsActivity : AppCompatActivity() { setContentView(R.layout.activity_contacts) val listView = findViewById(R.id.contacts) as ListView + Log.d("Baresip", "Got ${contacts.size} contacts") - clAdapter = ContactListAdapter(this, contacts) + val aor = intent.extras.getString("aor") + clAdapter = ContactListAdapter(this, contacts, aor) listView.adapter = clAdapter listView.onItemLongClickListener = AdapterView.OnItemLongClickListener { _, _, pos, _ -> diff --git a/app/src/main/kotlin/com/tutpro/baresip/MainActivity.kt b/app/src/main/kotlin/com/tutpro/baresip/MainActivity.kt index 4603e322..6cb72db7 100644 --- a/app/src/main/kotlin/com/tutpro/baresip/MainActivity.kt +++ b/app/src/main/kotlin/com/tutpro/baresip/MainActivity.kt @@ -292,6 +292,12 @@ class MainActivity : AppCompatActivity() { contactsButton.setOnClickListener { val i = Intent(this@MainActivity, ContactsActivity::class.java) + val b = Bundle() + if (aorSpinner.selectedItemPosition >= 0) + b.putString("aor", uas[aorSpinner.selectedItemPosition].account.aor) + else + b.putString("aor", "") + i.putExtras(b) startActivityForResult(i, CONTACTS_CODE) } @@ -787,11 +793,6 @@ class MainActivity : AppCompatActivity() { startActivityForResult(i, ACCOUNTS_CODE) return true } - R.id.contacts -> { - i = Intent(this, ContactsActivity::class.java) - startActivityForResult(i, CONTACTS_CODE) - return true - } R.id.config -> { i = Intent(this, EditConfigActivity::class.java) startActivityForResult(i, EDIT_CONFIG_CODE) diff --git a/app/src/main/res/layout/account_row.xml b/app/src/main/res/layout/account_row.xml index a26b93a5..79efa4a6 100644 --- a/app/src/main/res/layout/account_row.xml +++ b/app/src/main/res/layout/account_row.xml @@ -21,7 +21,7 @@ android:layout_alignParentEnd="true" android:paddingTop="5dp" android:paddingBottom="5dp" - android:layout_marginLeft="6dp" + android:layout_marginStart="6dp" android:icon="@android:drawable/ic_menu_delete" android:scaleType="centerCrop" > diff --git a/app/src/main/res/layout/activity_history.xml b/app/src/main/res/layout/activity_history.xml index 5738106c..bfb8965b 100644 --- a/app/src/main/res/layout/activity_history.xml +++ b/app/src/main/res/layout/activity_history.xml @@ -7,7 +7,7 @@ android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" - tools:context="com.tutpro.baresip.HistoryActivity"> + tools:context=".CallsActivity"> + android:layout_height="wrap_content" + android:orientation="horizontal" > + + +