From a5e89d6f6a0915eb57432d84e48acdcf44d3bb00 Mon Sep 17 00:00:00 2001 From: Juha Heinanen Date: Wed, 16 May 2018 18:16:12 +0300 Subject: [PATCH] no need for aors array or aor_ua function --- app/src/main/cpp/baresip.c | 15 ---- .../main/kotlin/com/tutpro/baresip/Account.kt | 9 +- .../tutpro/baresip/AccountSpinnerAdapter.kt | 4 +- .../kotlin/com/tutpro/baresip/MainActivity.kt | 83 +++++++++---------- 4 files changed, 41 insertions(+), 70 deletions(-) diff --git a/app/src/main/cpp/baresip.c b/app/src/main/cpp/baresip.c index 23bf49b8..abece685 100644 --- a/app/src/main/cpp/baresip.c +++ b/app/src/main/cpp/baresip.c @@ -368,21 +368,6 @@ Java_com_tutpro_baresip_MainActivity_ua_1current(JNIEnv *env, jobject thiz) return (*env)->NewStringUTF(env, ua_buf); } -JNIEXPORT jstring JNICALL -Java_com_tutpro_baresip_MainActivity_aor_1ua(JNIEnv *env, jobject thiz, - jstring javaAoR) -{ - const char *native_aor = (*env)->GetStringUTFChars(env, javaAoR, 0); - struct ua *ua = uag_find_aor(native_aor); - char ua_buf[256]; - - if (ua == NULL) - ua_buf[0] = '\0'; - else - sprintf(ua_buf, "%lu", (unsigned long)ua); - return (*env)->NewStringUTF(env, ua_buf); -} - JNIEXPORT jstring JNICALL Java_com_tutpro_baresip_MainActivity_call_1peeruri(JNIEnv *env, jobject thiz, jstring javaCall) { diff --git a/app/src/main/kotlin/com/tutpro/baresip/Account.kt b/app/src/main/kotlin/com/tutpro/baresip/Account.kt index 9d3450da..72fbd2fd 100644 --- a/app/src/main/kotlin/com/tutpro/baresip/Account.kt +++ b/app/src/main/kotlin/com/tutpro/baresip/Account.kt @@ -1,10 +1,3 @@ package com.tutpro.baresip -class Account(val ua: String, val aoR: String, val mediaenc: String, var status: String) { - private var statusImage: Int = 0 - - init { - this.statusImage = 0 - } - -} +class Account(val ua: String, val aoR: String, val mediaenc: String, var status: String) {} diff --git a/app/src/main/kotlin/com/tutpro/baresip/AccountSpinnerAdapter.kt b/app/src/main/kotlin/com/tutpro/baresip/AccountSpinnerAdapter.kt index aee2ddd2..fd5d1671 100644 --- a/app/src/main/kotlin/com/tutpro/baresip/AccountSpinnerAdapter.kt +++ b/app/src/main/kotlin/com/tutpro/baresip/AccountSpinnerAdapter.kt @@ -10,7 +10,7 @@ import android.widget.TextView import java.util.ArrayList -class AccountSpinnerAdapter(private val cxt: Context, private val aors: ArrayList, +class AccountSpinnerAdapter(private val cxt: Context, private val accounts: ArrayList, private val images: ArrayList) : ArrayAdapter(cxt, android.R.layout.simple_spinner_item, images) { @@ -26,7 +26,7 @@ class AccountSpinnerAdapter(private val cxt: Context, private val aors: ArrayLis val inflater = cxt.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater val row = inflater.inflate(R.layout.account_spinner, parent, false) val textView = row.findViewById(R.id.spinnerText) as TextView - textView.text = aors[position] + textView.text = accounts[position].aoR textView.textSize = 17f val imageView = row.findViewById(R.id.spinnerImage) as ImageView imageView.setImageResource(images[position]) diff --git a/app/src/main/kotlin/com/tutpro/baresip/MainActivity.kt b/app/src/main/kotlin/com/tutpro/baresip/MainActivity.kt index cd8bccd2..efc58250 100644 --- a/app/src/main/kotlin/com/tutpro/baresip/MainActivity.kt +++ b/app/src/main/kotlin/com/tutpro/baresip/MainActivity.kt @@ -78,12 +78,12 @@ class MainActivity : AppCompatActivity() { .setContent(RemoteViews(getPackageName(), R.layout.notification)) aorSpinner = findViewById(R.id.AoRList) as Spinner - accountAdapter = AccountSpinnerAdapter(applicationContext, aors, images) + accountAdapter = AccountSpinnerAdapter(applicationContext, accounts, images) aorSpinner.adapter = accountAdapter aorSpinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener { override fun onItemSelected(parent: AdapterView<*>, view: View, position: Int, id: Long) { - val aor = aors[position] - val ua = aor_ua(aor) + val aor = accounts[position].aoR + val ua = accounts[position].ua Log.i("Baresip", "Setting $aor current") val out = Call.uaCalls(callsOut, ua) if (out.size == 0) { @@ -122,7 +122,7 @@ class MainActivity : AppCompatActivity() { dtmf.visibility = View.INVISIBLE } } - val `in` = Call.uaCalls(callsIn, aor_ua(aor)) + val `in` = Call.uaCalls(callsIn, ua) val view_count = layout.childCount Log.d("Baresip", "View count is $view_count") if (view_count > 7) { @@ -207,7 +207,7 @@ class MainActivity : AppCompatActivity() { unverifyDialog.setMessage("This call is SECURE and peer is VERIFIED! " + "Do you want to unverify the peer?") unverifyDialog.setPositiveButton("Unverify") { dialog, _ -> - val out = Call.uaCalls(callsOut, aor_ua(aors[aorSpinner.selectedItemPosition])) + val out = Call.uaCalls(callsOut, accounts[aorSpinner.selectedItemPosition].ua) if (out.size > 0) { if (cmd_exec("zrtp_unverify " + out[0].zid) != 0) { Log.w("Baresip", @@ -229,23 +229,30 @@ class MainActivity : AppCompatActivity() { callButton.text = "Call" callButton.setOnClickListener { - Log.d("Baresip", "AoR at position " + aors[aorSpinner.selectedItemPosition]) - val aor = aors[aorSpinner.selectedItemPosition] + val aor = accounts[aorSpinner.selectedItemPosition].aoR + val ua = accounts[aorSpinner.selectedItemPosition].ua when (callButton.text.toString()) { "Call" -> { - call(aor, (findViewById(R.id.callee) as EditText).text.toString()) + val callee = (findViewById(R.id.callee) as EditText).text.toString() + if (callee.length > 0) { + var uri = EditContactsActivity.findContactURI(callee) + if (!uri.startsWith("sip:")) uri = "sip:$uri" + if (!uri.contains("@")) { + val host = aor.substring(aor.indexOf("@") + 1) + uri = "$uri@$host" + } + call(ua, uri) + } } "Cancel" -> { - Log.i("Baresip", "Canceling UA " + aor_ua(aor) + " call " + - callsOut[0].call + " to " + - (findViewById(R.id.callee) as EditText).text) - ua_hangup(aor_ua(aor), callsOut[0].call, 486, "Rejected") + Log.i("Baresip", "Canceling AoR $aor call " + + callsOut[0].call + " to " + (findViewById(R.id.callee) as EditText).text) + ua_hangup(ua, callsOut[0].call, 486, "Rejected") } "Hangup" -> { - Log.i("Baresip", "Hanging up UA " + aor_ua(aor) + " call " + - callsOut[0].call + " to " + - (findViewById(R.id.callee) as EditText).text) - ua_hangup(aor_ua(aor), callsOut[0].call,0, "") + Log.i("Baresip", "Hanging up AoR $aor call " + + callsOut[0].call + " to " + (findViewById(R.id.callee) as EditText).text) + ua_hangup(ua, callsOut[0].call,0, "") } } } @@ -268,7 +275,7 @@ class MainActivity : AppCompatActivity() { "History" -> { val i = Intent(this@MainActivity, HistoryActivity::class.java) val b = Bundle() - b.putString("aor", aors[aorSpinner.selectedItemPosition]) + b.putString("aor", accounts[aorSpinner.selectedItemPosition].aoR) i.putExtras(b) startActivityForResult(i, HISTORY_CODE) } @@ -411,7 +418,7 @@ class MainActivity : AppCompatActivity() { } if (resultCode == RESULT_CANCELED) { Log.d("Baresip", "History canceled") - if (HistoryActivity.aorHistory(aors[aorSpinner.selectedItemPosition]) == 0) { + if (HistoryActivity.aorHistory(accounts[aorSpinner.selectedItemPosition].aoR) == 0) { (findViewById(R.id.holdButton) as Button).visibility = View.INVISIBLE } } @@ -423,16 +430,8 @@ class MainActivity : AppCompatActivity() { } } - private fun call(aor: String, callee: String) { - if (callee.length == 0) return - var uri = EditContactsActivity.findContactURI(callee) - if (!uri.startsWith("sip:")) uri = "sip:$uri" - if (!uri.contains("@")) { - val host = aor.substring(aor.indexOf("@") + 1) - uri = "$uri@$host" - } + private fun call(ua: String, uri: String) { (findViewById(R.id.callee) as EditText).setText(uri) - val ua = aor_ua(aor) Log.i("Baresip", "Calling $ua / $uri") val call = ua_connect(ua, uri) if (call != "") { @@ -597,14 +596,14 @@ class MainActivity : AppCompatActivity() { val contentView = RemoteViews(getPackageName(), R.layout.notification) for (i: Int in 0 .. 3) { val resID = resources.getIdentifier("status$i", "id", packageName); - if (i < images.size) { + if (i < accounts.size) { contentView.setImageViewResource(resID, images[i]) contentView.setViewVisibility(resID, View.VISIBLE) } else { contentView.setViewVisibility(resID, View.INVISIBLE) } } - if (images.size > 4) + if (accounts.size > 4) contentView.setViewVisibility(R.id.etc, View.VISIBLE) else contentView.setViewVisibility(R.id.etc, View.INVISIBLE) @@ -617,7 +616,6 @@ class MainActivity : AppCompatActivity() { val aor = ua_aor(ua) Log.d("Baresip", "Adding account $ua with AoR $aor") accounts.add(Account(ua, aor, ua_mediaenc(ua),"")) - aors.add(aor) images.add(R.drawable.dot_yellow) this@MainActivity.runOnUiThread { accountAdapter.notifyDataSetChanged() @@ -631,8 +629,7 @@ class MainActivity : AppCompatActivity() { val aor = ua_aor(ua) val ev = event.split(",") - Log.d("Baresip", "Handling event " + ev[0] + " for " + ua + "/" + call + "/" + - aor) + Log.d("Baresip", "Handling event ${ev[0]} for $ua/$call/$aor") for (account_index in accounts.indices) { if (accounts[account_index].aoR == aor) { @@ -643,7 +640,6 @@ class MainActivity : AppCompatActivity() { "registered" -> { Log.d("Baresip", "Setting status to green") accounts[account_index].status = "OK" - aors[account_index] = aor images[account_index] = R.drawable.dot_green this@MainActivity.runOnUiThread { accountAdapter.notifyDataSetChanged() @@ -653,7 +649,6 @@ class MainActivity : AppCompatActivity() { "registering failed" -> { Log.d("Baresip", "Setting status to red") accounts[account_index].status = "FAIL" - aors[account_index] = aor images[account_index] = R.drawable.dot_red this@MainActivity.runOnUiThread { accountAdapter.notifyDataSetChanged() @@ -670,7 +665,7 @@ class MainActivity : AppCompatActivity() { callsOut[out_index].hold = false callsOut[out_index].security = R.drawable.box_red this@MainActivity.runOnUiThread { - if (ua == aor_ua(aors[aorSpinner.selectedItemPosition])) { + if (ua == accounts[aorSpinner.selectedItemPosition].ua) { callButton.text = "Hangup" holdButton.text = "Hold" holdButton.visibility = View.VISIBLE @@ -697,7 +692,7 @@ class MainActivity : AppCompatActivity() { callsIn[in_index].status = "Answer" callsIn[in_index].security = R.drawable.box_red this@MainActivity.runOnUiThread { - if (ua == aor_ua(aors[aorSpinner.selectedItemPosition])) { + if (ua == accounts[aorSpinner.selectedItemPosition].ua) { if (ua_mediaenc(ua) != "") { var view_id = (in_index + 1) * 10 + 3 val securityButton = findViewById(view_id) as ImageButton @@ -731,7 +726,7 @@ class MainActivity : AppCompatActivity() { val new_call = Call(ua, call, peer_uri, "Answer", null) callsIn.add(new_call) this@MainActivity.runOnUiThread { - if (ua == aor_ua(aors[aorSpinner.selectedItemPosition])) { + if (ua == accounts[aorSpinner.selectedItemPosition].ua) { addCallViews(ua, new_call, callsIn.size * 10) } } @@ -763,7 +758,7 @@ class MainActivity : AppCompatActivity() { if (index != -1) { callsIn[index].security = security callsIn[index].zid = ev[3] - if (ua == aor_ua(aors[aorSpinner.selectedItemPosition])) { + if (ua == accounts[aorSpinner.selectedItemPosition].ua) { val view_id = (index + 1) * 10 + 3 val securityButton = layout.findViewById(view_id) as ImageButton securityButton.setImageResource(security) @@ -787,7 +782,7 @@ class MainActivity : AppCompatActivity() { if (index != -1) { callsIn[index].security = R.drawable.box_yellow callsIn[index].zid = ev[3] - if (ua == aor_ua(aors[aorSpinner.selectedItemPosition])) { + if (ua == accounts[aorSpinner.selectedItemPosition].ua) { val view_id = (index + 1) * 10 + 3 val securityButton = layout.findViewById(view_id) as ImageButton securityButton.setImageResource(R.drawable.box_yellow) @@ -809,7 +804,7 @@ class MainActivity : AppCompatActivity() { callsOut[out_index].security = R.drawable.box_green callsOut[out_index].zid = ev[1] this@MainActivity.runOnUiThread { - if (ua == aor_ua(aors[aorSpinner.selectedItemPosition])) { + if (ua == accounts[aorSpinner.selectedItemPosition].ua) { securityButton.setImageResource(R.drawable.box_green) securityButton.tag = "green" securityButton.visibility = View.VISIBLE @@ -821,7 +816,7 @@ class MainActivity : AppCompatActivity() { callsIn[in_index].security = R.drawable.box_green callsIn[in_index].zid = ev[1] this@MainActivity.runOnUiThread { - if (ua == aor_ua(aors[aorSpinner.selectedItemPosition])) { + if (ua == accounts[aorSpinner.selectedItemPosition].ua) { val view_id = (in_index + 1) * 10 + 3 val securityButton = layout.findViewById(view_id) as ImageButton securityButton.setImageResource(R.drawable.box_green) @@ -843,7 +838,7 @@ class MainActivity : AppCompatActivity() { val remove_count = callsIn.size - in_index callsIn.removeAt(in_index) this@MainActivity.runOnUiThread { - if (ua == aor_ua(aors[aorSpinner.selectedItemPosition])) { + if (ua == accounts[aorSpinner.selectedItemPosition].ua) { if (callButton.text == "Call") { holdButton.text = "History" holdButton.visibility = View.VISIBLE @@ -869,7 +864,7 @@ class MainActivity : AppCompatActivity() { Log.d("Baresip", "Removing outgoing call " + ua + "/" + call + "/" + callsOut[out_index].peerURI) this@MainActivity.runOnUiThread { - if (ua == aor_ua(aors[aorSpinner.selectedItemPosition])) { + if (ua == accounts[aorSpinner.selectedItemPosition].ua) { callButton.text = "Call" callButton.isEnabled = true callee.setText("") @@ -908,7 +903,6 @@ class MainActivity : AppCompatActivity() { external fun baresipStart(path: String) external fun baresipStop() external fun call_peeruri(call: String): String - external fun aor_ua(aor: String): String external fun ua_aor(ua: String): String external fun ua_mediaenc(ua: String): String external fun ua_connect(ua: String, peer_uri: String): String @@ -924,7 +918,6 @@ class MainActivity : AppCompatActivity() { internal var running: Boolean = false internal var accounts = ArrayList() - internal var aors = ArrayList() internal var images = ArrayList() internal var callsIn = ArrayList() internal var callsOut = ArrayList()