- Properly handle pausing of chats and chats activities.
This commit is contained in:
@@ -47,6 +47,8 @@ class AccountActivity : AppCompatActivity() {
|
|||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
setContentView(R.layout.activity_account)
|
setContentView(R.layout.activity_account)
|
||||||
|
|
||||||
|
supportActionBar?.setDisplayHomeAsUpEnabled(true)
|
||||||
|
|
||||||
accp = intent.getStringExtra("accp")!!
|
accp = intent.getStringExtra("accp")!!
|
||||||
Utils.addActivity("account,$accp")
|
Utils.addActivity("account,$accp")
|
||||||
|
|
||||||
@@ -196,8 +198,6 @@ 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 {
|
||||||
|
|||||||
@@ -33,17 +33,17 @@ class ChatActivity : AppCompatActivity() {
|
|||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
|
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
|
|
||||||
setContentView(R.layout.activity_chat)
|
setContentView(R.layout.activity_chat)
|
||||||
|
|
||||||
|
supportActionBar?.setDisplayHomeAsUpEnabled(true)
|
||||||
|
|
||||||
aor = intent.getStringExtra("aor")!!
|
aor = intent.getStringExtra("aor")!!
|
||||||
peerUri = intent.getStringExtra("peer")!!
|
peerUri = intent.getStringExtra("peer")!!
|
||||||
focus = intent.getBooleanExtra("focus", false)
|
focus = intent.getBooleanExtra("focus", false)
|
||||||
|
|
||||||
if (BaresipService.activities.first().startsWith("chat,$aor,$peerUri")) {
|
if (BaresipService.activities.first().startsWith("chat,$aor,$peerUri")) {
|
||||||
val i = Intent()
|
returnResult(Activity.RESULT_CANCELED)
|
||||||
setResult(Activity.RESULT_CANCELED, i)
|
return
|
||||||
finish()
|
|
||||||
} else {
|
} else {
|
||||||
Utils.addActivity("chat,$aor,$peerUri,$focus")
|
Utils.addActivity("chat,$aor,$peerUri,$focus")
|
||||||
}
|
}
|
||||||
@@ -51,9 +51,7 @@ class ChatActivity : AppCompatActivity() {
|
|||||||
val userAgent = Account.findUa(aor)
|
val userAgent = Account.findUa(aor)
|
||||||
if (userAgent == null) {
|
if (userAgent == null) {
|
||||||
Log.w("Baresip", "MessageActivity did not find ua of $aor")
|
Log.w("Baresip", "MessageActivity did not find ua of $aor")
|
||||||
val i = Intent()
|
returnResult(Activity.RESULT_CANCELED)
|
||||||
setResult(Activity.RESULT_CANCELED, i)
|
|
||||||
finish()
|
|
||||||
return
|
return
|
||||||
} else {
|
} else {
|
||||||
ua = userAgent
|
ua = userAgent
|
||||||
@@ -168,26 +166,21 @@ class ChatActivity : AppCompatActivity() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun onCreateOptionsMenu(menu: Menu): Boolean {
|
override fun onCreateOptionsMenu(menu: Menu): Boolean {
|
||||||
|
|
||||||
menuInflater.inflate(R.menu.call_icon, menu)
|
menuInflater.inflate(R.menu.call_icon, menu)
|
||||||
return true
|
return true
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onPause() {
|
override fun onPause() {
|
||||||
|
|
||||||
if (newMessage.text.toString() != "") {
|
if (newMessage.text.toString() != "") {
|
||||||
Log.d("Baresip", "Saving newMessage ${newMessage.text} for $aor::$peerUri")
|
Log.d("Baresip", "Saving newMessage ${newMessage.text} for $aor::$peerUri")
|
||||||
BaresipService.chatTexts.put("$aor::$peerUri", newMessage.text.toString())
|
BaresipService.chatTexts.put("$aor::$peerUri", newMessage.text.toString())
|
||||||
}
|
}
|
||||||
|
returnResult(Activity.RESULT_CANCELED)
|
||||||
super.onPause()
|
super.onPause()
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onResume() {
|
override fun onResume() {
|
||||||
|
|
||||||
super.onResume()
|
super.onResume()
|
||||||
|
|
||||||
val chatText = BaresipService.chatTexts.get("$aor::$peerUri")
|
val chatText = BaresipService.chatTexts.get("$aor::$peerUri")
|
||||||
if (chatText != null) {
|
if (chatText != null) {
|
||||||
Log.d("Baresip", "Restoring newMessage ${newMessage.text} for $aor::$peerUri")
|
Log.d("Baresip", "Restoring newMessage ${newMessage.text} for $aor::$peerUri")
|
||||||
@@ -199,14 +192,11 @@ class ChatActivity : AppCompatActivity() {
|
|||||||
chatMessages = uaPeerMessages(aor, peerUri)
|
chatMessages = uaPeerMessages(aor, peerUri)
|
||||||
mlAdapter = MessageListAdapter(this, chatMessages)
|
mlAdapter = MessageListAdapter(this, chatMessages)
|
||||||
listView.adapter = mlAdapter
|
listView.adapter = mlAdapter
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onDestroy() {
|
override fun onDestroy() {
|
||||||
|
|
||||||
LocalBroadcastManager.getInstance(this).unregisterReceiver(messageResponseReceiver)
|
LocalBroadcastManager.getInstance(this).unregisterReceiver(messageResponseReceiver)
|
||||||
super.onDestroy()
|
super.onDestroy()
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onOptionsItemSelected(item: MenuItem): Boolean {
|
override fun onOptionsItemSelected(item: MenuItem): Boolean {
|
||||||
@@ -217,23 +207,6 @@ class ChatActivity : AppCompatActivity() {
|
|||||||
|
|
||||||
when (item.itemId) {
|
when (item.itemId) {
|
||||||
|
|
||||||
android.R.id.home -> {
|
|
||||||
var save = false
|
|
||||||
for (m in chatMessages) {
|
|
||||||
if (m.new) {
|
|
||||||
m.new = false
|
|
||||||
save = true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (save) Message.save()
|
|
||||||
imm.hideSoftInputFromWindow(newMessage.windowToken, 0)
|
|
||||||
BaresipService.activities.remove("chat,$aor,$peerUri,false")
|
|
||||||
BaresipService.activities.remove("chat,$aor,$peerUri,true")
|
|
||||||
val i = Intent()
|
|
||||||
setResult(Activity.RESULT_OK, i)
|
|
||||||
finish()
|
|
||||||
}
|
|
||||||
|
|
||||||
R.id.callIcon -> {
|
R.id.callIcon -> {
|
||||||
if (SystemClock.elapsedRealtime() - lastCall > 1000) {
|
if (SystemClock.elapsedRealtime() - lastCall > 1000) {
|
||||||
lastCall = SystemClock.elapsedRealtime()
|
lastCall = SystemClock.elapsedRealtime()
|
||||||
@@ -245,25 +218,48 @@ class ChatActivity : AppCompatActivity() {
|
|||||||
intent.putExtra("peer", peerUri)
|
intent.putExtra("peer", peerUri)
|
||||||
startActivity(intent)
|
startActivity(intent)
|
||||||
finish()
|
finish()
|
||||||
|
return true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
android.R.id.home -> {
|
||||||
|
onBackPressed()
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return true
|
return super.onOptionsItemSelected(item)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onBackPressed() {
|
override fun onBackPressed() {
|
||||||
|
|
||||||
|
var save = false
|
||||||
|
for (m in chatMessages) {
|
||||||
|
if (m.new) {
|
||||||
|
m.new = false
|
||||||
|
save = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (save) Message.save()
|
||||||
|
|
||||||
|
imm.hideSoftInputFromWindow(newMessage.windowToken, 0)
|
||||||
|
|
||||||
BaresipService.activities.remove("chat,$aor,$peerUri,false")
|
BaresipService.activities.remove("chat,$aor,$peerUri,false")
|
||||||
BaresipService.activities.remove("chat,$aor,$peerUri,true")
|
BaresipService.activities.remove("chat,$aor,$peerUri,true")
|
||||||
val i = Intent()
|
returnResult(Activity.RESULT_OK)
|
||||||
setResult(Activity.RESULT_OK, i)
|
super.onBackPressed()
|
||||||
finish()
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun returnResult(code: Int) {
|
||||||
|
val i = Intent()
|
||||||
|
i.putExtra("aor", aor)
|
||||||
|
setResult(code, i)
|
||||||
|
finish()
|
||||||
|
}
|
||||||
|
|
||||||
private fun uaPeerMessages(aor: String, peerUri: String): ArrayList<Message> {
|
private fun uaPeerMessages(aor: String, peerUri: String): ArrayList<Message> {
|
||||||
val res = ArrayList<Message>()
|
val res = ArrayList<Message>()
|
||||||
for (m in Message.messages())
|
for (m in Message.messages())
|
||||||
|
|||||||
@@ -18,8 +18,7 @@ class ChatsActivity: AppCompatActivity() {
|
|||||||
internal lateinit var clAdapter: ChatListAdapter
|
internal lateinit var clAdapter: ChatListAdapter
|
||||||
internal lateinit var peerUri: AutoCompleteTextView
|
internal lateinit var peerUri: AutoCompleteTextView
|
||||||
internal lateinit var plusButton: ImageButton
|
internal lateinit var plusButton: ImageButton
|
||||||
|
internal lateinit var aor: String
|
||||||
private var aor = ""
|
|
||||||
|
|
||||||
public override fun onCreate(savedInstanceState: Bundle?) {
|
public override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
|
|
||||||
@@ -131,21 +130,16 @@ class ChatsActivity: AppCompatActivity() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun onResume() {
|
override fun onResume() {
|
||||||
|
|
||||||
super.onResume()
|
super.onResume()
|
||||||
|
|
||||||
clAdapter.clear()
|
clAdapter.clear()
|
||||||
uaMessages = uaMessages(aor)
|
uaMessages = uaMessages(aor)
|
||||||
clAdapter = ChatListAdapter(this, uaMessages)
|
clAdapter = ChatListAdapter(this, uaMessages)
|
||||||
listView.adapter = clAdapter
|
listView.adapter = clAdapter
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onCreateOptionsMenu(menu: Menu): Boolean {
|
override fun onCreateOptionsMenu(menu: Menu): Boolean {
|
||||||
|
|
||||||
menuInflater.inflate(R.menu.chats_menu, menu)
|
menuInflater.inflate(R.menu.chats_menu, menu)
|
||||||
return true
|
return true
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onOptionsItemSelected(item: MenuItem): Boolean {
|
override fun onOptionsItemSelected(item: MenuItem): Boolean {
|
||||||
@@ -168,24 +162,22 @@ class ChatsActivity: AppCompatActivity() {
|
|||||||
dialog.dismiss()
|
dialog.dismiss()
|
||||||
}
|
}
|
||||||
deleteDialog.create().show()
|
deleteDialog.create().show()
|
||||||
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
android.R.id.home -> {
|
android.R.id.home -> {
|
||||||
BaresipService.activities.remove("chats,$aor")
|
BaresipService.activities.remove("chats,$aor")
|
||||||
val i = Intent()
|
returnResult()
|
||||||
setResult(Activity.RESULT_CANCELED, i)
|
return true
|
||||||
finish()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return true
|
return super.onOptionsItemSelected(item)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
|
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
|
||||||
|
|
||||||
super.onActivityResult(requestCode, resultCode, data)
|
super.onActivityResult(requestCode, resultCode, data)
|
||||||
|
|
||||||
if (requestCode == MainActivity.CHAT_CODE) {
|
if (requestCode == MainActivity.CHAT_CODE) {
|
||||||
if (resultCode == Activity.RESULT_OK) {
|
if (resultCode == Activity.RESULT_OK) {
|
||||||
clAdapter.clear()
|
clAdapter.clear()
|
||||||
@@ -194,17 +186,25 @@ class ChatsActivity: AppCompatActivity() {
|
|||||||
listView.adapter = clAdapter
|
listView.adapter = clAdapter
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onBackPressed() {
|
override fun onBackPressed() {
|
||||||
|
|
||||||
BaresipService.activities.remove("chats,$aor")
|
BaresipService.activities.remove("chats,$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()
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun uaMessages(aor: String) : ArrayList<Message> {
|
private fun uaMessages(aor: String) : ArrayList<Message> {
|
||||||
|
|||||||
@@ -1119,9 +1119,6 @@ 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 -> {
|
||||||
@@ -1173,11 +1170,13 @@ class MainActivity : AppCompatActivity() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
CHATS_CODE, CHAT_CODE -> {
|
CHATS_CODE, CHAT_CODE -> {
|
||||||
|
spinToAor(data!!.getStringExtra("aor")!!)
|
||||||
updateIcons(UserAgent.uas()[aorSpinner.selectedItemPosition].account)
|
updateIcons(UserAgent.uas()[aorSpinner.selectedItemPosition].account)
|
||||||
}
|
}
|
||||||
|
|
||||||
ABOUT_CODE -> {
|
ABOUT_CODE -> {
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user