- 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 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>
|
||||||
Reference in New Issue
Block a user