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