Improved code handling how presence icon & content description is computed + added do not disturb presence support
This commit is contained in:
parent
4264ecc933
commit
b467569308
16 changed files with 50 additions and 21 deletions
|
@ -324,6 +324,9 @@ class ChatRoomViewModel(val chatRoom: ChatRoom) : ViewModel(), ContactDataInterf
|
|||
if (friend.consolidatedPresence == ConsolidatedPresence.Online) {
|
||||
lastPresenceInfo.value = AppUtils.getString(R.string.chat_room_presence_online)
|
||||
return
|
||||
} else if (friend.consolidatedPresence == ConsolidatedPresence.DoNotDisturb) {
|
||||
lastPresenceInfo.value = AppUtils.getString(R.string.chat_room_presence_do_not_disturb)
|
||||
return
|
||||
}
|
||||
|
||||
val timestamp = friend.presenceModel?.timestamp ?: -1
|
||||
|
|
|
@ -52,6 +52,7 @@ import org.linphone.activities.voip.views.ScrollDotsView
|
|||
import org.linphone.contact.ContactAvatarGenerator
|
||||
import org.linphone.contact.ContactDataInterface
|
||||
import org.linphone.contact.getPictureUri
|
||||
import org.linphone.core.ConsolidatedPresence
|
||||
import org.linphone.core.tools.Log
|
||||
import org.linphone.views.VoiceRecordProgressBar
|
||||
|
||||
|
@ -773,3 +774,21 @@ fun ScrollDotsView.setItems(count: Int) {
|
|||
fun ScrollDotsView.setSelectedIndex(index: Int) {
|
||||
setSelectedDot(index)
|
||||
}
|
||||
|
||||
@BindingAdapter("presenceIcon")
|
||||
fun ImageView.setPresenceIcon(presence: ConsolidatedPresence) {
|
||||
val icon = when (presence) {
|
||||
ConsolidatedPresence.Online -> R.drawable.led_online
|
||||
ConsolidatedPresence.DoNotDisturb -> R.drawable.led_do_not_disturb
|
||||
ConsolidatedPresence.Busy -> R.drawable.led_away
|
||||
else -> R.drawable.led_not_registered
|
||||
}
|
||||
setImageResource(icon)
|
||||
|
||||
val contentDescription = when (presence) {
|
||||
ConsolidatedPresence.Online -> AppUtils.getString(R.string.content_description_presence_online)
|
||||
ConsolidatedPresence.DoNotDisturb -> AppUtils.getString(R.string.content_description_presence_do_not_disturb)
|
||||
else -> AppUtils.getString(R.string.content_description_presence_offline)
|
||||
}
|
||||
setContentDescription(contentDescription)
|
||||
}
|
||||
|
|
5
app/src/main/res/drawable/led_do_not_disturb.xml
Normal file
5
app/src/main/res/drawable/led_do_not_disturb.xml
Normal file
|
@ -0,0 +1,5 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval">
|
||||
<solid android:color="@color/led_error"/>
|
||||
<size android:width="15dp" android:height="15dp"/>
|
||||
</shape>
|
|
@ -84,8 +84,7 @@
|
|||
android:adjustViewBounds="true"
|
||||
android:background="@drawable/led_background"
|
||||
android:padding="2dp"
|
||||
android:contentDescription="@{data.presenceStatus == ConsolidatedPresence.Online ? @string/content_description_presence_online : @string/content_description_presence_offline}"
|
||||
android:src="@{data.presenceStatus == ConsolidatedPresence.Online ? @drawable/led_online : @drawable/led_away, default=@drawable/led_online}"
|
||||
app:presenceIcon="@{data.presenceStatus}"
|
||||
android:visibility="@{data.chatMessage.outgoing || selectionListViewModel.isEditionEnabled || data.hideAvatar || data.presenceStatus == ConsolidatedPresence.Offline ? View.GONE : View.VISIBLE, default=gone}" />
|
||||
|
||||
<LinearLayout
|
||||
|
|
|
@ -48,8 +48,7 @@
|
|||
android:adjustViewBounds="true"
|
||||
android:background="@drawable/led_background"
|
||||
android:padding="2dp"
|
||||
android:contentDescription="@{data.presenceStatus == ConsolidatedPresence.Online ? @string/content_description_presence_online : @string/content_description_presence_offline}"
|
||||
android:src="@{data.presenceStatus == ConsolidatedPresence.Online ? @drawable/led_online : @drawable/led_away, default=@drawable/led_online}"
|
||||
app:presenceIcon="@{data.presenceStatus}"
|
||||
android:visibility="@{data.presenceStatus == ConsolidatedPresence.Offline ? View.GONE : View.VISIBLE, default=gone}" />
|
||||
|
||||
<ImageView
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<layout xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<layout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
|
||||
<data>
|
||||
<import type="android.view.View"/>
|
||||
|
@ -46,8 +47,7 @@
|
|||
android:adjustViewBounds="true"
|
||||
android:background="@drawable/led_background"
|
||||
android:padding="2dp"
|
||||
android:contentDescription="@{data.presenceStatus == ConsolidatedPresence.Online ? @string/content_description_presence_online : @string/content_description_presence_offline}"
|
||||
android:src="@{data.presenceStatus == ConsolidatedPresence.Online ? @drawable/led_online : @drawable/led_away, default=@drawable/led_online}"
|
||||
app:presenceIcon="@{data.presenceStatus}"
|
||||
android:visibility="@{data.presenceStatus == ConsolidatedPresence.Offline ? View.GONE : View.VISIBLE, default=gone}" />
|
||||
|
||||
<ImageView
|
||||
|
|
|
@ -35,8 +35,7 @@
|
|||
android:adjustViewBounds="true"
|
||||
android:background="@drawable/led_background"
|
||||
android:padding="2dp"
|
||||
android:contentDescription="@{data.presenceStatus == ConsolidatedPresence.Online ? @string/content_description_presence_online : @string/content_description_presence_offline}"
|
||||
android:src="@{data.presenceStatus == ConsolidatedPresence.Online ? @drawable/led_online : @drawable/led_away, default=@drawable/led_online}"
|
||||
app:presenceIcon="@{data.presenceStatus}"
|
||||
android:visibility="@{data.presenceStatus == ConsolidatedPresence.Offline ? View.GONE : View.VISIBLE, default=gone}" />
|
||||
|
||||
<TextView
|
||||
|
|
|
@ -58,8 +58,7 @@
|
|||
android:adjustViewBounds="true"
|
||||
android:background="@drawable/led_background"
|
||||
android:padding="2dp"
|
||||
android:contentDescription="@{data.presenceStatus == ConsolidatedPresence.Online ? @string/content_description_presence_online : @string/content_description_presence_offline}"
|
||||
android:src="@{data.presenceStatus == ConsolidatedPresence.Online ? @drawable/led_online : @drawable/led_away, default=@drawable/led_online}"
|
||||
app:presenceIcon="@{data.presenceStatus}"
|
||||
android:visibility="@{data.presenceStatus == ConsolidatedPresence.Offline ? View.GONE : View.VISIBLE, default=gone}"
|
||||
app:layout_constraintStart_toStartOf="@id/avatar"
|
||||
app:layout_constraintBottom_toBottomOf="@id/avatar"/>
|
||||
|
|
|
@ -104,7 +104,7 @@
|
|||
android:adjustViewBounds="true"
|
||||
android:background="@drawable/led_background"
|
||||
android:padding="2dp"
|
||||
android:src="@{viewModel.presenceStatus == ConsolidatedPresence.Online ? @drawable/led_online : @drawable/led_away, default=@drawable/led_online}"
|
||||
app:presenceIcon="@{viewModel.presenceStatus}"
|
||||
android:visibility="@{viewModel.presenceStatus == ConsolidatedPresence.Offline ? View.GONE : View.VISIBLE, default=gone}" />
|
||||
|
||||
</RelativeLayout>
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<layout xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<layout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
|
||||
<data>
|
||||
<import type="android.view.View"/>
|
||||
|
@ -52,7 +53,7 @@
|
|||
android:adjustViewBounds="true"
|
||||
android:background="@drawable/led_background"
|
||||
android:padding="2dp"
|
||||
android:src="@{viewModel.presenceStatus == ConsolidatedPresence.Online ? @drawable/led_online : @drawable/led_away, default=@drawable/led_online}"
|
||||
app:presenceIcon="@{viewModel.presenceStatus}"
|
||||
android:visibility="@{viewModel.presenceStatus == ConsolidatedPresence.Offline ? View.GONE : View.VISIBLE, default=gone}" />
|
||||
|
||||
<LinearLayout
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<layout xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<layout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
|
||||
<data>
|
||||
<import type="android.view.View"/>
|
||||
|
@ -50,8 +51,7 @@
|
|||
android:adjustViewBounds="true"
|
||||
android:background="@drawable/led_background"
|
||||
android:padding="2dp"
|
||||
android:contentDescription="@{data.presenceStatus == ConsolidatedPresence.Online ? @string/content_description_presence_online : @string/content_description_presence_offline}"
|
||||
android:src="@{data.presenceStatus == ConsolidatedPresence.Online ? @drawable/led_online : @drawable/led_away, default=@drawable/led_online}"
|
||||
app:presenceIcon="@{data.presenceStatus}"
|
||||
android:visibility="@{data.presenceStatus == ConsolidatedPresence.Offline ? View.GONE : View.VISIBLE, default=gone}" />
|
||||
|
||||
<ImageView
|
||||
|
|
|
@ -106,7 +106,7 @@
|
|||
android:adjustViewBounds="true"
|
||||
android:background="@drawable/led_background"
|
||||
android:padding="2dp"
|
||||
android:src="@{viewModel.presenceStatus == ConsolidatedPresence.Online ? @drawable/led_online : @drawable/led_away, default=@drawable/led_online}"
|
||||
app:presenceIcon="@{viewModel.presenceStatus}"
|
||||
android:visibility="@{viewModel.presenceStatus == ConsolidatedPresence.Offline ? View.GONE : View.VISIBLE, default=gone}" />
|
||||
|
||||
</RelativeLayout>
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<layout xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<layout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
|
||||
<data>
|
||||
|
||||
|
@ -101,7 +102,7 @@
|
|||
android:adjustViewBounds="true"
|
||||
android:background="@drawable/led_background"
|
||||
android:padding="2dp"
|
||||
android:src="@{viewModel.presenceStatus == ConsolidatedPresence.Online ? @drawable/led_online : @drawable/led_away, default=@drawable/led_online}"
|
||||
app:presenceIcon="@{viewModel.presenceStatus}"
|
||||
android:visibility="@{viewModel.presenceStatus == ConsolidatedPresence.Offline ? View.GONE : View.VISIBLE, default=gone}" />
|
||||
|
||||
<ImageView
|
||||
|
|
|
@ -80,7 +80,7 @@
|
|||
android:adjustViewBounds="true"
|
||||
android:background="@drawable/led_background"
|
||||
android:padding="2dp"
|
||||
android:src="@{viewModel.presenceStatus == ConsolidatedPresence.Online ? @drawable/led_online : @drawable/led_away, default=@drawable/led_online}"
|
||||
app:presenceIcon="@{viewModel.presenceStatus}"
|
||||
android:visibility="@{!viewModel.defaultAccountFound || viewModel.presenceStatus == ConsolidatedPresence.Offline ? View.GONE : View.VISIBLE, default=gone}" />
|
||||
|
||||
<LinearLayout
|
||||
|
|
|
@ -760,11 +760,13 @@
|
|||
<string name="chat_message_voice_recording">Message vocal</string>
|
||||
<string name="content_description_presence_online">La personne est en ligne</string>
|
||||
<string name="content_description_presence_offline">La personne est hors ligne</string>
|
||||
<string name="content_description_presence_do_not_disturb">La personne souhaite ne pas être dérangée</string>
|
||||
<string name="account_setting_publish_presence_title">Publier la présence</string>
|
||||
<string name="chat_room_presence_online">En ligne</string>
|
||||
<string name="chat_room_presence_last_seen_online_today">En ligne aujourd\'hui à</string>
|
||||
<string name="chat_room_presence_last_seen_online_yesterday">En ligne hier à</string>
|
||||
<string name="chat_room_presence_last_seen_online">En ligne le</string>
|
||||
<string name="chat_room_presence_do_not_disturb">Ne pas déranger</string>
|
||||
<string name="account_setting_delete_dialog_title">Voulez-vous supprimer votre compte ?</string>
|
||||
<string name="account_setting_delete_generic_confirmation_dialog">Votre compte sera supprimé localement.\nPour le supprimer de manière définitive, rendez-vous sur le site internet de votre fournisseur SIP.</string>
|
||||
<string name="account_setting_delete_sip_linphone_org_confirmation_dialog">Votre compte sera supprimé localement.\nPour le supprimer de manière définitive, rendez-vous sur notre plateforme de gestion des comptes :</string>
|
||||
|
|
|
@ -237,6 +237,7 @@
|
|||
<string name="chat_room_presence_last_seen_online_today">Online today at</string>
|
||||
<string name="chat_room_presence_last_seen_online_yesterday">Online yesterday at</string>
|
||||
<string name="chat_room_presence_last_seen_online">Online on</string>
|
||||
<string name="chat_room_presence_do_not_disturb">Do not disturb</string>
|
||||
|
||||
<!-- Recordings -->
|
||||
<string name="recordings_empty_list">No recordings</string>
|
||||
|
@ -901,4 +902,5 @@
|
|||
<string name="content_description_recording_export">Export recording</string>
|
||||
<string name="content_description_presence_online">User is online</string>
|
||||
<string name="content_description_presence_offline">User is offline</string>
|
||||
<string name="content_description_presence_do_not_disturb">User is asking not to be disturbed</string>
|
||||
</resources>
|
||||
|
|
Loading…
Reference in a new issue