- Show red messages icon when unread messages exist
This commit is contained in:
@ -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)
|
||||
|
||||
@ -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"
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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()
|
||||
}
|
||||
|
||||
|
||||
@ -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
|
||||
|
||||
5
app/src/main/res/drawable/messages_unread.xml
Normal file
5
app/src/main/res/drawable/messages_unread.xml
Normal 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>
|
||||
Reference in New Issue
Block a user