- Show red messages icon when unread messages exist

This commit is contained in:
Juha Heinanen
2019-04-20 14:42:51 +03:00
parent d3a8e2df41
commit bedcaa52f0
6 changed files with 37 additions and 10 deletions
@@ -16,6 +16,7 @@ class Account(val accp: String) {
var vmNew = 0 var vmNew = 0
var vmOld = 0 var vmOld = 0
var missedCalls = false var missedCalls = false
var unreadMessages = false
init { init {
val stunHost = account_stun_host(accp) val stunHost = account_stun_host(accp)
@@ -543,6 +543,8 @@ class BaresipService: Service() {
Log.d(LOG_TAG, "Message event for $uap from $peer at $timeStamp") Log.d(LOG_TAG, "Message event for $uap from $peer at $timeStamp")
Message.add(Message(ua.account.aor, peer, text, timeStamp.toLong(), Message.add(Message(ua.account.aor, peer, text, timeStamp.toLong(),
R.drawable.arrow_down_green, 0, "", true)) R.drawable.arrow_down_green, 0, "", true))
Message.saveMessages(filesPath)
ua.account.unreadMessages = true
if (!Utils.isVisible()) { if (!Utils.isVisible()) {
val intent = Intent(this, BaresipService::class.java) val intent = Intent(this, BaresipService::class.java)
intent.action = "Message Show" intent.action = "Message Show"
@@ -92,6 +92,7 @@ class ChatActivity : AppCompatActivity() {
if (chatMessages.size == 0) { if (chatMessages.size == 0) {
listView.removeFooterView(footerView) listView.removeFooterView(footerView)
} }
Message.saveMessages(applicationContext.filesDir.absolutePath)
} }
DialogInterface.BUTTON_POSITIVE -> { DialogInterface.BUTTON_POSITIVE -> {
} }
@@ -154,6 +155,8 @@ class ChatActivity : AppCompatActivity() {
LocalBroadcastManager.getInstance(this).registerReceiver(messageResponseReceiver, LocalBroadcastManager.getInstance(this).registerReceiver(messageResponseReceiver,
IntentFilter("message response")) IntentFilter("message response"))
ua.account.unreadMessages = false
} }
override fun onCreateOptionsMenu(menu: Menu): Boolean { override fun onCreateOptionsMenu(menu: Menu): Boolean {
@@ -166,7 +169,6 @@ class ChatActivity : AppCompatActivity() {
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())
} }
Message.saveMessages(applicationContext.filesDir.absolutePath)
super.onPause() super.onPause()
} }
@@ -199,7 +201,14 @@ class ChatActivity : AppCompatActivity() {
override fun onOptionsItemSelected(item: MenuItem): Boolean { override fun onOptionsItemSelected(item: MenuItem): Boolean {
when (item.itemId) { when (item.itemId) {
android.R.id.home -> { android.R.id.home -> {
for (m in chatMessages) if (m.new) m.new = false var save = false
for (m in chatMessages) {
if (m.new) {
m.new = false
save = true
}
}
if (save) Message.saveMessages(applicationContext.filesDir.absolutePath)
imm.hideSoftInputFromWindow(newMessage.windowToken, 0) imm.hideSoftInputFromWindow(newMessage.windowToken, 0)
val i = Intent() val i = Intent()
setResult(Activity.RESULT_OK, i) setResult(Activity.RESULT_OK, i)
@@ -73,6 +73,7 @@ class ChatsActivity: AppCompatActivity() {
clAdapter.remove(m) clAdapter.remove(m)
clAdapter.notifyDataSetChanged() clAdapter.notifyDataSetChanged()
BaresipService.messages = msgs BaresipService.messages = msgs
Message.saveMessages(filesPath)
uaMessages = uaMessages(aor) uaMessages = uaMessages(aor)
} }
DialogInterface.BUTTON_POSITIVE -> { DialogInterface.BUTTON_POSITIVE -> {
@@ -142,7 +143,6 @@ class ChatsActivity: AppCompatActivity() {
} }
override fun onPause() { override fun onPause() {
Message.saveMessages(applicationContext.filesDir.absolutePath)
super.onPause() super.onPause()
} }
@@ -152,10 +152,7 @@ class MainActivity : AppCompatActivity() {
} else { } else {
voicemailButton.visibility = View.INVISIBLE voicemailButton.visibility = View.INVISIBLE
} }
if (acc.missedCalls) updateIcons(acc)
callsButton.setImageResource(R.drawable.calls_missed)
else
callsButton.setImageResource(R.drawable.calls)
} }
override fun onNothingSelected(parent: AdapterView<*>) { override fun onNothingSelected(parent: AdapterView<*>) {
@@ -522,10 +519,12 @@ class MainActivity : AppCompatActivity() {
"message show", "message reply" -> "message show", "message reply" ->
handleServiceEvent(resumeAction, arrayListOf(resumeUap, resumeUri)) handleServiceEvent(resumeAction, arrayListOf(resumeUap, resumeUri))
else -> { else -> {
if ((aorSpinner.selectedItemPosition == -1) && (UserAgent.uas().size > 0)) if (UserAgent.uas().size > 0) {
if (aorSpinner.selectedItemPosition == -1)
aorSpinner.setSelection(0) aorSpinner.setSelection(0)
if (aorSpinner.selectedItemPosition >= 0)
showCall(UserAgent.uas()[aorSpinner.selectedItemPosition]) showCall(UserAgent.uas()[aorSpinner.selectedItemPosition])
updateIcons(UserAgent.uas()[aorSpinner.selectedItemPosition].account)
}
} }
} }
resumeAction = "" resumeAction = ""
@@ -1130,6 +1129,17 @@ class MainActivity : AppCompatActivity() {
} }
} }
private fun updateIcons(acc: Account) {
if (acc.missedCalls)
callsButton.setImageResource(R.drawable.calls_missed)
else
callsButton.setImageResource(R.drawable.calls)
if (acc.unreadMessages)
messagesButton.setImageResource(R.drawable.messages_unread)
else
messagesButton.setImageResource(R.drawable.messages)
}
companion object { companion object {
var visible = false var visible = false
@@ -0,0 +1,5 @@
<vector android:height="44dp" android:tint="@color/colorAccent"
android:viewportHeight="24.0" android:viewportWidth="24.0"
android:width="44dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#FF000000" android:pathData="M20,2L4,2c-1.1,0 -1.99,0.9 -1.99,2L2,22l4,-4h14c1.1,0 2,-0.9 2,-2L22,4c0,-1.1 -0.9,-2 -2,-2zM6,9h12v2L6,11L6,9zM14,14L6,14v-2h8v2zM18,8L6,8L6,6h12v2z"/>
</vector>