Fix event in OneToOne chat room

This commit is contained in:
Erwan Croze 2018-09-05 10:14:06 +02:00
parent 11b656d602
commit 351138dabd
7 changed files with 94 additions and 65 deletions

View file

@ -356,6 +356,12 @@ Vos amis pourront vous joindre plus facilement si vous associez votre compte à
<string name="lime_encryption_entry_disabled">Désactivé</string>
<string name="lime_encryption_entry_mandatory">Obligatoire</string>
<string name="lime_encryption_entry_preferred">Préferré</string>
<string name="security_level_degraded">Dégradation du niveau de sécurité</string>
<string name="security_level_degraded_from">Dégradation du niveau de sécurité par %s</string>
<string name="security_alert_multidevice">Multiples instances détectées</string>
<string name="security_alert_multidevice_from">Multiples instances de %s</string>
<string name="security_alert">Alerte de sécurité</string>
<string name="security_alert_from">Alerte de sécurité par %s</string>
<!--Network settings-->
<string name="pref_network_title">Réseau</string>
<string name="pref_wifi_only">Utiliser WiFi uniquement</string>

View file

@ -214,8 +214,12 @@
<string name="participant_removed">%s has left</string>
<string name="device_added">new device for %s</string>
<string name="device_removed">device for %s removed</string>
<string name="security_alert_address">Security of chatroom have been compromised by %s</string>
<string name="security_alert">Security of chatroom have been compromised</string>
<string name="security_level_degraded">Degradation of security level</string>
<string name="security_level_degraded_from">Degradation of security level from %s</string>
<string name="security_alert_multidevice">Multidevice detected</string>
<string name="security_alert_multidevice_from">Multidevice detected from %s</string>
<string name="security_alert">Security alert</string>
<string name="security_alert_from">Security alert from %s</string>
<string name="subject_changed">new subject: %s</string>
<string name="admin_set">%s is admin</string>
<string name="admin_unset">%s is no longer admin</string>

View file

@ -26,6 +26,7 @@ import android.content.pm.PackageManager;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Color;
import android.graphics.Matrix;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
@ -399,62 +400,84 @@ public class ChatEventsAdapter extends ListSelectionAdapter {
holder.bubbleLayout.setLayoutParams(layoutParams);
} else if (!isOneToOne) { // Event is not chat message
holder.eventLayout.setVisibility(View.VISIBLE);
Address address = event.getParticipantAddress();
String displayName = null;
if (address != null) {
LinphoneContact contact = ContactsManager.getInstance().findContactFromAddress(address);
if (contact != null) {
displayName = contact.getFullName();
} else {
displayName = LinphoneUtils.getAddressDisplayName(address);
}
}
switch (event.getType()) {
case ConferenceCreated:
holder.eventMessage.setText(mContext.getString(R.string.conference_created));
break;
case ConferenceTerminated:
holder.eventMessage.setText(mContext.getString(R.string.conference_destroyed));
break;
case ConferenceParticipantAdded:
holder.eventMessage.setText(mContext.getString(R.string.participant_added).replace("%s", displayName));
break;
case ConferenceParticipantRemoved:
holder.eventMessage.setText(mContext.getString(R.string.participant_removed).replace("%s", displayName));
break;
case ConferenceSubjectChanged:
holder.eventMessage.setText(mContext.getString(R.string.subject_changed).replace("%s", event.getSubject()));
break;
case ConferenceParticipantSetAdmin:
holder.eventMessage.setText(mContext.getString(R.string.admin_set).replace("%s", displayName));
break;
case ConferenceParticipantUnsetAdmin:
holder.eventMessage.setText(mContext.getString(R.string.admin_unset).replace("%s", displayName));
break;
case ConferenceParticipantDeviceAdded:
holder.eventMessage.setText(mContext.getString(R.string.device_added).replace("%s", displayName));
break;
case ConferenceParticipantDeviceRemoved:
holder.eventMessage.setText(mContext.getString(R.string.device_removed).replace("%s", displayName));
break;
case ConferenceSecurityAlert:
String message;
if (event.getSecurityAlertFaultyDevice() != null && event.getSecurityAlertFaultyDevice().getUsername() != null ) {
message = mContext.getString(R.string.security_alert_address).replace("%s", event.getSecurityAlertFaultyDevice().asStringUriOnly());
} else {
message = mContext.getString(R.string.security_alert);
}
holder.eventMessage.setText(message);
break;
case None:
default:
//TODO
break;
}
}
Address address = event.getParticipantAddress();
String displayName = null;
if (address != null) {
LinphoneContact contact = ContactsManager.getInstance().findContactFromAddress(address);
if (contact != null) {
displayName = contact.getFullName();
} else {
displayName = LinphoneUtils.getAddressDisplayName(address);
}
}
holder.eventMessage.setTextColor(Color.BLACK);
switch (event.getType()) {
case ConferenceCreated:
holder.eventMessage.setText(mContext.getString(R.string.conference_created));
break;
case ConferenceTerminated:
holder.eventMessage.setText(mContext.getString(R.string.conference_destroyed));
break;
case ConferenceParticipantAdded:
holder.eventMessage.setText(mContext.getString(R.string.participant_added).replace("%s", displayName));
break;
case ConferenceParticipantRemoved:
holder.eventMessage.setText(mContext.getString(R.string.participant_removed).replace("%s", displayName));
break;
case ConferenceSubjectChanged:
holder.eventMessage.setText(mContext.getString(R.string.subject_changed).replace("%s", event.getSubject()));
break;
case ConferenceParticipantSetAdmin:
holder.eventMessage.setText(mContext.getString(R.string.admin_set).replace("%s", displayName));
break;
case ConferenceParticipantUnsetAdmin:
holder.eventMessage.setText(mContext.getString(R.string.admin_unset).replace("%s", displayName));
break;
case ConferenceParticipantDeviceAdded:
holder.eventMessage.setText(mContext.getString(R.string.device_added).replace("%s", displayName));
break;
case ConferenceParticipantDeviceRemoved:
holder.eventMessage.setText(mContext.getString(R.string.device_removed).replace("%s", displayName));
break;
case ConferenceSecurityEvent:
String message;
holder.eventLayout.setVisibility(View.VISIBLE);
switch (event.getSecurityEventType()) {
case SecurityLevelDowngraded:
message = mContext.getString(R.string.security_level_degraded);
break;
case MultideviceParticipantDetected:
holder.eventMessage.setTextColor(Color.RED);
if (event.getSecurityEventFaultyDevice() != null) {
message = mContext.getString(R.string.security_alert_multidevice_from).replace("%s", event.getSecurityEventFaultyDevice().getUsername());
} else {
message = mContext.getString(R.string.security_alert_multidevice);
}
break;
case ManInTheMiddleDetected:
case LimeIdentityKeyChanged:
holder.eventMessage.setTextColor(Color.RED);
if (event.getSecurityEventFaultyDevice() != null) {
message = mContext.getString(R.string.security_alert_from).replace("%s", event.getSecurityEventFaultyDevice().getUsername());
} else {
message = mContext.getString(R.string.security_alert);
}
break;
default:
message = "";
holder.eventLayout.setVisibility(View.GONE);
}
holder.eventMessage.setText(message);
break;
case None:
default:
//TODO
break;
}
return view;
}

View file

@ -580,11 +580,7 @@ public class GroupChatFragment extends Fragment implements ChatRoomListener, Con
private void displayChatRoomHistory() {
if (mChatRoom == null) return;
if (mChatRoom.hasCapability(ChatRoomCapabilities.OneToOne.toInt())) {
mEventsAdapter = new ChatEventsAdapter(this, mSelectionHelper, mInflater, mChatRoom.getHistoryMessageEvents(0), mParticipants, true);
} else {
mEventsAdapter = new ChatEventsAdapter(this, mSelectionHelper, mInflater, mChatRoom.getHistoryEvents(0), mParticipants, false);
}
mEventsAdapter = new ChatEventsAdapter(this, mSelectionHelper, mInflater, mChatRoom.getHistoryEvents(0), mParticipants, mChatRoom.hasCapability(ChatRoomCapabilities.OneToOne.toInt()));
mSelectionHelper.setAdapter(mEventsAdapter);
mChatEventsList.setAdapter(mEventsAdapter);
}
@ -946,7 +942,7 @@ public class GroupChatFragment extends Fragment implements ChatRoomListener, Con
}
@Override
public void onSecurityAlert(ChatRoom cr, EventLog event) {
public void onSecurityEvent(ChatRoom cr, EventLog event) {
mEventsAdapter.addToHistory(event);
}

View file

@ -502,7 +502,7 @@ public class GroupInfoFragment extends Fragment implements ChatRoomListener {
}
@Override
public void onSecurityAlert(ChatRoom cr, EventLog eventLog) {
public void onSecurityEvent(ChatRoom cr, EventLog eventLog) {
}

@ -1 +1 @@
Subproject commit 405da744b62e299d4324988de7bcdbf9779b21ac
Subproject commit 125bdcc893a7636ec49745ab8f14b5d23d39f73d

@ -1 +1 @@
Subproject commit d9d7f754d2ddc87eeb0b35bb05b482e78541f358
Subproject commit 5460eefe4c196cc1159b3013ee3b7f8d31e0ae49