- Properly handle pausing/resuming from/to account, accounts, and calls
activities.
This commit is contained in:
@@ -196,6 +196,8 @@ class AccountActivity : AppCompatActivity() {
|
|||||||
defaultCheck = findViewById(R.id.Default) as CheckBox
|
defaultCheck = findViewById(R.id.Default) as CheckBox
|
||||||
defaultCheck.isChecked = uaIndex == 0
|
defaultCheck.isChecked = uaIndex == 0
|
||||||
|
|
||||||
|
supportActionBar?.setDisplayHomeAsUpEnabled(true)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onCreateOptionsMenu(menu: Menu): Boolean {
|
override fun onCreateOptionsMenu(menu: Menu): Boolean {
|
||||||
@@ -209,10 +211,8 @@ class AccountActivity : AppCompatActivity() {
|
|||||||
|
|
||||||
override fun onOptionsItemSelected(item: MenuItem): Boolean {
|
override fun onOptionsItemSelected(item: MenuItem): Boolean {
|
||||||
|
|
||||||
if (BaresipService.activities.indexOf("account,$accp") == -1) return true
|
if (BaresipService.activities.indexOf("account,$accp") == -1)
|
||||||
|
return true
|
||||||
val intent = Intent()
|
|
||||||
intent.putExtra("aor", aor)
|
|
||||||
|
|
||||||
when (item.itemId) {
|
when (item.itemId) {
|
||||||
|
|
||||||
@@ -458,30 +458,32 @@ class AccountActivity : AppCompatActivity() {
|
|||||||
if (regCheck.isChecked && !((acc.authUser != "") && (acc.authPass == "")))
|
if (regCheck.isChecked && !((acc.authUser != "") && (acc.authPass == "")))
|
||||||
Api.ua_register(ua.uap)
|
Api.ua_register(ua.uap)
|
||||||
|
|
||||||
setResult(Activity.RESULT_OK, intent)
|
BaresipService.activities.remove("account,$accp")
|
||||||
|
returnResult(Activity.RESULT_OK)
|
||||||
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
android.R.id.home ->
|
android.R.id.home -> {
|
||||||
setResult(Activity.RESULT_CANCELED, intent)
|
onBackPressed()
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
BaresipService.activities.remove("account,$accp")
|
return super.onOptionsItemSelected(item)
|
||||||
finish()
|
|
||||||
|
|
||||||
return true
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onBackPressed() {
|
override fun onBackPressed() {
|
||||||
|
|
||||||
BaresipService.activities.remove("account,$accp")
|
BaresipService.activities.remove("account,$accp")
|
||||||
val intent = Intent()
|
returnResult(Activity.RESULT_CANCELED)
|
||||||
intent.putExtra("aor", aor)
|
|
||||||
setResult(Activity.RESULT_CANCELED, intent)
|
|
||||||
finish()
|
|
||||||
super.onBackPressed()
|
super.onBackPressed()
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onPause() {
|
||||||
|
/* Without this, data is null at MainActivity onActivityResult */
|
||||||
|
returnResult(Activity.RESULT_CANCELED)
|
||||||
|
super.onPause()
|
||||||
}
|
}
|
||||||
|
|
||||||
fun onClick(v: View) {
|
fun onClick(v: View) {
|
||||||
@@ -541,6 +543,13 @@ class AccountActivity : AppCompatActivity() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun returnResult(code: Int) {
|
||||||
|
val i = Intent()
|
||||||
|
i.putExtra("aor", aor)
|
||||||
|
setResult(code, i)
|
||||||
|
finish()
|
||||||
|
}
|
||||||
|
|
||||||
private fun setAuthPass(acc: Account, ap: String) {
|
private fun setAuthPass(acc: Account, ap: String) {
|
||||||
if (account_set_auth_pass(acc.accp, ap) == 0) {
|
if (account_set_auth_pass(acc.accp, ap) == 0) {
|
||||||
acc.authPass = account_auth_pass(acc.accp)
|
acc.authPass = account_auth_pass(acc.accp)
|
||||||
|
|||||||
@@ -22,13 +22,15 @@ import java.util.ArrayList
|
|||||||
class AccountsActivity : AppCompatActivity() {
|
class AccountsActivity : AppCompatActivity() {
|
||||||
|
|
||||||
internal lateinit var alAdapter: AccountListAdapter
|
internal lateinit var alAdapter: AccountListAdapter
|
||||||
|
internal lateinit var aor: String
|
||||||
|
|
||||||
public override fun onCreate(savedInstanceState: Bundle?) {
|
public override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
|
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
setContentView(R.layout.activity_accounts)
|
setContentView(R.layout.activity_accounts)
|
||||||
|
|
||||||
Utils.addActivity("accounts")
|
aor = intent.getStringExtra("aor")!!
|
||||||
|
Utils.addActivity("accounts,$aor")
|
||||||
|
|
||||||
val listView = findViewById(R.id.accounts) as ListView
|
val listView = findViewById(R.id.accounts) as ListView
|
||||||
generateAccounts()
|
generateAccounts()
|
||||||
@@ -126,22 +128,24 @@ class AccountsActivity : AppCompatActivity() {
|
|||||||
|
|
||||||
override fun onOptionsItemSelected(item: MenuItem): Boolean {
|
override fun onOptionsItemSelected(item: MenuItem): Boolean {
|
||||||
|
|
||||||
if (BaresipService.activities.indexOf("accounts") == -1)
|
if (BaresipService.activities.indexOf("accounts,$aor") == -1)
|
||||||
return true
|
return true
|
||||||
|
|
||||||
when (item.itemId) {
|
when (item.itemId) {
|
||||||
|
|
||||||
R.id.help -> {
|
R.id.help -> {
|
||||||
Utils.alertView(this@AccountsActivity, getString(R.string.new_account),
|
Utils.alertView(this@AccountsActivity, getString(R.string.new_account),
|
||||||
getString(R.string.accounts_help))
|
getString(R.string.accounts_help))
|
||||||
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
android.R.id.home -> {
|
android.R.id.home -> {
|
||||||
BaresipService.activities.remove("accounts")
|
onBackPressed()
|
||||||
val i = Intent()
|
return true
|
||||||
setResult(RESULT_OK, i)
|
|
||||||
finish()
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return true
|
|
||||||
|
return super.onOptionsItemSelected(item)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -151,13 +155,24 @@ class AccountsActivity : AppCompatActivity() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun onBackPressed() {
|
override fun onBackPressed() {
|
||||||
BaresipService.activities.remove("accounts")
|
BaresipService.activities.remove("accounts,$aor")
|
||||||
val i = Intent()
|
returnResult()
|
||||||
setResult(Activity.RESULT_OK, i)
|
|
||||||
finish()
|
|
||||||
super.onBackPressed()
|
super.onBackPressed()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun onPause() {
|
||||||
|
/* Without this, data is null at MainActivity onActivityResult */
|
||||||
|
returnResult()
|
||||||
|
super.onPause()
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun returnResult() {
|
||||||
|
val i = Intent()
|
||||||
|
i.putExtra("aor", aor)
|
||||||
|
setResult(Activity.RESULT_CANCELED, i)
|
||||||
|
finish()
|
||||||
|
}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
|
|
||||||
var accounts = ArrayList<AccountRow>()
|
var accounts = ArrayList<AccountRow>()
|
||||||
|
|||||||
@@ -130,16 +130,10 @@ class CallsActivity : AppCompatActivity() {
|
|||||||
invalidateOptionsMenu()
|
invalidateOptionsMenu()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onPause() {
|
|
||||||
|
|
||||||
CallHistory.save()
|
|
||||||
super.onPause()
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onOptionsItemSelected(item: MenuItem): Boolean {
|
override fun onOptionsItemSelected(item: MenuItem): Boolean {
|
||||||
|
|
||||||
if (BaresipService.activities.indexOf("calls,$aor") == -1) return true
|
if (BaresipService.activities.indexOf("calls,$aor") == -1)
|
||||||
|
return true
|
||||||
|
|
||||||
when (item.itemId) {
|
when (item.itemId) {
|
||||||
|
|
||||||
@@ -158,33 +152,42 @@ class CallsActivity : AppCompatActivity() {
|
|||||||
dialog.dismiss()
|
dialog.dismiss()
|
||||||
}
|
}
|
||||||
deleteDialog.create().show()
|
deleteDialog.create().show()
|
||||||
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
R.id.history_on_off -> {
|
R.id.history_on_off -> {
|
||||||
account.callHistory = !account.callHistory
|
account.callHistory = !account.callHistory
|
||||||
invalidateOptionsMenu()
|
invalidateOptionsMenu()
|
||||||
AccountsActivity.saveAccounts()
|
AccountsActivity.saveAccounts()
|
||||||
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
android.R.id.home -> {
|
android.R.id.home -> {
|
||||||
BaresipService.activities.remove("calls,$aor")
|
onBackPressed()
|
||||||
val i = Intent()
|
return true
|
||||||
setResult(Activity.RESULT_CANCELED, i)
|
|
||||||
finish()
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return true
|
return super.onOptionsItemSelected(item)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onBackPressed() {
|
override fun onBackPressed() {
|
||||||
|
|
||||||
BaresipService.activities.remove("calls,$aor")
|
BaresipService.activities.remove("calls,$aor")
|
||||||
|
returnResult()
|
||||||
|
super.onBackPressed()
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onPause() {
|
||||||
|
CallHistory.save()
|
||||||
|
returnResult()
|
||||||
|
super.onPause()
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun returnResult() {
|
||||||
val i = Intent()
|
val i = Intent()
|
||||||
|
i.putExtra("aor", aor)
|
||||||
setResult(Activity.RESULT_CANCELED, i)
|
setResult(Activity.RESULT_CANCELED, i)
|
||||||
finish()
|
finish()
|
||||||
super.onBackPressed()
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onPrepareOptionsMenu(menu: Menu): Boolean {
|
override fun onPrepareOptionsMenu(menu: Menu): Boolean {
|
||||||
|
|||||||
@@ -146,12 +146,15 @@ class MainActivity : AppCompatActivity() {
|
|||||||
aorSpinner.setOnTouchListener { view, event ->
|
aorSpinner.setOnTouchListener { view, event ->
|
||||||
if (event.action == MotionEvent.ACTION_DOWN) {
|
if (event.action == MotionEvent.ACTION_DOWN) {
|
||||||
if (aorSpinner.selectedItemPosition == -1) {
|
if (aorSpinner.selectedItemPosition == -1) {
|
||||||
val i = Intent(this, AccountsActivity::class.java)
|
val i = Intent(this@MainActivity, AccountsActivity::class.java)
|
||||||
|
val b = Bundle()
|
||||||
|
b.putString("aor", "")
|
||||||
|
i.putExtras(b)
|
||||||
startActivityForResult(i, ACCOUNTS_CODE)
|
startActivityForResult(i, ACCOUNTS_CODE)
|
||||||
true
|
true
|
||||||
} else {
|
} else {
|
||||||
if ((event.x - view.left) < 100) {
|
if ((event.x - view.left) < 100) {
|
||||||
val i = Intent(this, AccountActivity::class.java)
|
val i = Intent(this@MainActivity, AccountActivity::class.java)
|
||||||
val b = Bundle()
|
val b = Bundle()
|
||||||
b.putString("accp", UserAgent.uas()[aorSpinner.selectedItemPosition].account.accp)
|
b.putString("accp", UserAgent.uas()[aorSpinner.selectedItemPosition].account.accp)
|
||||||
i.putExtras(b)
|
i.putExtras(b)
|
||||||
@@ -527,10 +530,6 @@ class MainActivity : AppCompatActivity() {
|
|||||||
Log.d("Baresip", "Main resumed with action '$resumeAction'")
|
Log.d("Baresip", "Main resumed with action '$resumeAction'")
|
||||||
visible = true
|
visible = true
|
||||||
when (resumeAction) {
|
when (resumeAction) {
|
||||||
"accounts" -> {
|
|
||||||
val i = Intent(this, AccountsActivity::class.java)
|
|
||||||
startActivityForResult(i, ACCOUNTS_CODE)
|
|
||||||
}
|
|
||||||
"call show" ->
|
"call show" ->
|
||||||
handleServiceEvent("call incoming",
|
handleServiceEvent("call incoming",
|
||||||
arrayListOf(resumeCall!!.ua.uap, resumeCall!!.callp))
|
arrayListOf(resumeCall!!.ua.uap, resumeCall!!.callp))
|
||||||
@@ -553,7 +552,8 @@ class MainActivity : AppCompatActivity() {
|
|||||||
"message show", "message reply" ->
|
"message show", "message reply" ->
|
||||||
handleServiceEvent(resumeAction, arrayListOf(resumeUap, resumeUri))
|
handleServiceEvent(resumeAction, arrayListOf(resumeUap, resumeUri))
|
||||||
else -> {
|
else -> {
|
||||||
if (!BaresipService.activities.isEmpty()) restoreActivities()
|
if (BaresipService.activities.isNotEmpty())
|
||||||
|
restoreActivities()
|
||||||
if (UserAgent.uas().size > 0) {
|
if (UserAgent.uas().size > 0) {
|
||||||
val incomingCall = Call.incomingCall()
|
val incomingCall = Call.incomingCall()
|
||||||
if (incomingCall != null) {
|
if (incomingCall != null) {
|
||||||
@@ -803,7 +803,8 @@ class MainActivity : AppCompatActivity() {
|
|||||||
"${getString(R.string.call_closed)}: $param",
|
"${getString(R.string.call_closed)}: $param",
|
||||||
Toast.LENGTH_LONG).show()
|
Toast.LENGTH_LONG).show()
|
||||||
}
|
}
|
||||||
if (!BaresipService.activities.isEmpty()) restoreActivities()
|
if (BaresipService.activities.isNotEmpty())
|
||||||
|
restoreActivities()
|
||||||
}
|
}
|
||||||
"message show", "message reply" -> {
|
"message show", "message reply" -> {
|
||||||
val peer = params[1]
|
val peer = params[1]
|
||||||
@@ -893,6 +894,12 @@ class MainActivity : AppCompatActivity() {
|
|||||||
}
|
}
|
||||||
R.id.accounts -> {
|
R.id.accounts -> {
|
||||||
i = Intent(this, AccountsActivity::class.java)
|
i = Intent(this, AccountsActivity::class.java)
|
||||||
|
val b = Bundle()
|
||||||
|
if (aorSpinner.selectedItemPosition != -1)
|
||||||
|
b.putString("aor", UserAgent.uas()[aorSpinner.selectedItemPosition].account.aor)
|
||||||
|
else
|
||||||
|
b.putString("aor", "")
|
||||||
|
i.putExtras(b)
|
||||||
startActivityForResult(i, ACCOUNTS_CODE)
|
startActivityForResult(i, ACCOUNTS_CODE)
|
||||||
}
|
}
|
||||||
R.id.backup -> {
|
R.id.backup -> {
|
||||||
@@ -1112,19 +1119,16 @@ class MainActivity : AppCompatActivity() {
|
|||||||
|
|
||||||
super.onActivityResult(requestCode, resultCode, data)
|
super.onActivityResult(requestCode, resultCode, data)
|
||||||
|
|
||||||
|
Log.d("Baresip", "onActivity result $requestCode $resultCode")
|
||||||
|
if (data != null) Log.d("Baresip", "aor = ${data.getStringExtra("aor")}")
|
||||||
|
|
||||||
when (requestCode) {
|
when (requestCode) {
|
||||||
|
|
||||||
ACCOUNTS_CODE -> {
|
ACCOUNTS_CODE -> {
|
||||||
uaAdapter.notifyDataSetChanged()
|
val aor = data!!.getStringExtra("aor")!!
|
||||||
if (UserAgent.uas().size > 0) {
|
spinToAor(aor)
|
||||||
if ((aorSpinner.selectedItemPosition == -1) ||
|
if (aorSpinner.selectedItemPosition != -1)
|
||||||
(aorSpinner.selectedItemPosition >= UserAgent.uas().size))
|
updateIcons(UserAgent.uas()[aorSpinner.selectedItemPosition].account)
|
||||||
aorSpinner.setSelection(0)
|
|
||||||
else
|
|
||||||
updateIcons(UserAgent.uas()[aorSpinner.selectedItemPosition].account)
|
|
||||||
} else {
|
|
||||||
aorSpinner.setSelection(-1)
|
|
||||||
}
|
|
||||||
if (BaresipService.isServiceRunning) {
|
if (BaresipService.isServiceRunning) {
|
||||||
baresipService.setAction("UpdateNotification")
|
baresipService.setAction("UpdateNotification")
|
||||||
startService(baresipService)
|
startService(baresipService)
|
||||||
@@ -1163,19 +1167,7 @@ class MainActivity : AppCompatActivity() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
CALLS_CODE -> {
|
CALLS_CODE -> {
|
||||||
val acc = UserAgent.uas()[aorSpinner.selectedItemPosition].account
|
spinToAor(data!!.getStringExtra("aor")!!)
|
||||||
if (resultCode == RESULT_OK) {
|
|
||||||
if (data != null) {
|
|
||||||
val peerUri = data.getStringExtra("peer_uri")!!
|
|
||||||
callUri.setText(Utils.friendlyUri(ContactsActivity.contactName(peerUri),
|
|
||||||
Utils.aorDomain(Utils.aorDomain(acc.aor))))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (resultCode == RESULT_CANCELED) {
|
|
||||||
if (CallHistory.aorHistorySize(acc.aor) == 0) {
|
|
||||||
holdButton.visibility = View.INVISIBLE
|
|
||||||
}
|
|
||||||
}
|
|
||||||
callsButton.setImageResource(R.drawable.calls)
|
callsButton.setImageResource(R.drawable.calls)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1192,8 +1184,12 @@ class MainActivity : AppCompatActivity() {
|
|||||||
for (account_index in UserAgent.uas().indices)
|
for (account_index in UserAgent.uas().indices)
|
||||||
if (UserAgent.uas()[account_index].account.aor == aor) {
|
if (UserAgent.uas()[account_index].account.aor == aor) {
|
||||||
aorSpinner.setSelection(account_index)
|
aorSpinner.setSelection(account_index)
|
||||||
break
|
return
|
||||||
}
|
}
|
||||||
|
if (UserAgent.uas().isNotEmpty())
|
||||||
|
aorSpinner.setSelection(0)
|
||||||
|
else
|
||||||
|
aorSpinner.setSelection(-1)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun call(ua: UserAgent, uri: String, status: String): Boolean {
|
private fun call(ua: UserAgent, uri: String, status: String): Boolean {
|
||||||
@@ -1391,6 +1387,9 @@ class MainActivity : AppCompatActivity() {
|
|||||||
}
|
}
|
||||||
"accounts" -> {
|
"accounts" -> {
|
||||||
val i = Intent(this, AccountsActivity::class.java)
|
val i = Intent(this, AccountsActivity::class.java)
|
||||||
|
val b = Bundle()
|
||||||
|
b.putString("aor", activity[1])
|
||||||
|
i.putExtras(b)
|
||||||
startActivityForResult(i, ACCOUNTS_CODE)
|
startActivityForResult(i, ACCOUNTS_CODE)
|
||||||
}
|
}
|
||||||
"account" -> {
|
"account" -> {
|
||||||
|
|||||||
Reference in New Issue
Block a user