- 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

View File

@ -16,6 +16,7 @@ class Account(val accp: String) {
var vmNew = 0
var vmOld = 0
var missedCalls = false
var unreadMessages = false
init {
val stunHost = account_stun_host(accp)

View File

@ -543,6 +543,8 @@ class BaresipService: Service() {
Log.d(LOG_TAG, "Message event for $uap from $peer at $timeStamp")
Message.add(Message(ua.account.aor, peer, text, timeStamp.toLong(),
R.drawable.arrow_down_green, 0, "", true))
Message.saveMessages(filesPath)
ua.account.unreadMessages = true
if (!Utils.isVisible()) {
val intent = Intent(this, BaresipService::class.java)
intent.action = "Message Show"

View File

@ -92,6 +92,7 @@ class ChatActivity : AppCompatActivity() {
if (chatMessages.size == 0) {
listView.removeFooterView(footerView)
}
Message.saveMessages(applicationContext.filesDir.absolutePath)
}
DialogInterface.BUTTON_POSITIVE -> {
}
@ -154,6 +155,8 @@ class ChatActivity : AppCompatActivity() {
LocalBroadcastManager.getInstance(this).registerReceiver(messageResponseReceiver,
IntentFilter("message response"))
ua.account.unreadMessages = false
}
override fun onCreateOptionsMenu(menu: Menu): Boolean {
@ -166,7 +169,6 @@ class ChatActivity : AppCompatActivity() {
Log.d("Baresip", "Saving newMessage ${newMessage.text} for $aor::$peerUri")
BaresipService.chatTexts.put("$aor::$peerUri", newMessage.text.toString())
}
Message.saveMessages(applicationContext.filesDir.absolutePath)
super.onPause()
}
@ -199,7 +201,14 @@ class ChatActivity : AppCompatActivity() {
override fun onOptionsItemSelected(item: MenuItem): Boolean {
when (item.itemId) {
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)
val i = Intent()
setResult(Activity.RESULT_OK, i)

View File

@ -73,6 +73,7 @@ class ChatsActivity: AppCompatActivity() {
clAdapter.remove(m)
clAdapter.notifyDataSetChanged()
BaresipService.messages = msgs
Message.saveMessages(filesPath)
uaMessages = uaMessages(aor)
}
DialogInterface.BUTTON_POSITIVE -> {
@ -142,7 +143,6 @@ class ChatsActivity: AppCompatActivity() {
}
override fun onPause() {
Message.saveMessages(applicationContext.filesDir.absolutePath)
super.onPause()
}

View File

@ -152,10 +152,7 @@ class MainActivity : AppCompatActivity() {
} else {
voicemailButton.visibility = View.INVISIBLE
}
if (acc.missedCalls)
callsButton.setImageResource(R.drawable.calls_missed)
else
callsButton.setImageResource(R.drawable.calls)
updateIcons(acc)
}
override fun onNothingSelected(parent: AdapterView<*>) {
@ -522,10 +519,12 @@ class MainActivity : AppCompatActivity() {
"message show", "message reply" ->
handleServiceEvent(resumeAction, arrayListOf(resumeUap, resumeUri))
else -> {
if ((aorSpinner.selectedItemPosition == -1) && (UserAgent.uas().size > 0))
aorSpinner.setSelection(0)
if (aorSpinner.selectedItemPosition >= 0)
if (UserAgent.uas().size > 0) {
if (aorSpinner.selectedItemPosition == -1)
aorSpinner.setSelection(0)
showCall(UserAgent.uas()[aorSpinner.selectedItemPosition])
updateIcons(UserAgent.uas()[aorSpinner.selectedItemPosition].account)
}
}
}
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 {
var visible = false

View File

@ -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>