From b765866a270713ae032dcebc8e5fb3f3a7d88a1a Mon Sep 17 00:00:00 2001 From: Julien Wadel Date: Mon, 16 Aug 2021 21:12:20 +0200 Subject: [PATCH] Add Admin and subject change events --- .../components/chat-events/ChatNoticeModel.cpp | 16 ++++++++++++++++ .../src/components/chat-room/ChatRoomModel.cpp | 8 ++++++++ linphone-app/ui/modules/Linphone/Chat/Notice.qml | 8 ++++++-- 3 files changed, 30 insertions(+), 2 deletions(-) diff --git a/linphone-app/src/components/chat-events/ChatNoticeModel.cpp b/linphone-app/src/components/chat-events/ChatNoticeModel.cpp index e76ae7010..080929335 100644 --- a/linphone-app/src/components/chat-events/ChatNoticeModel.cpp +++ b/linphone-app/src/components/chat-events/ChatNoticeModel.cpp @@ -110,6 +110,22 @@ bool ChatNoticeModel::update(){ break; } + case linphone::EventLog::Type::ConferenceSubjectChanged : { + setName(Utils::coreStringToAppString(mEventLog->getSubject())); + setStatus(NoticeType::NoticeMessage); + break; + } + + case linphone::EventLog::Type::ConferenceParticipantSetAdmin : + case linphone::EventLog::Type::ConferenceParticipantUnsetAdmin : + { + setName(Utils::getDisplayName(participantAddress)); + setStatus(NoticeType::NoticeMessage); + break; + } + + + default:{ handledEvent = false; } diff --git a/linphone-app/src/components/chat-room/ChatRoomModel.cpp b/linphone-app/src/components/chat-room/ChatRoomModel.cpp index a20bcffdf..e342a4508 100644 --- a/linphone-app/src/components/chat-room/ChatRoomModel.cpp +++ b/linphone-app/src/components/chat-room/ChatRoomModel.cpp @@ -1044,6 +1044,10 @@ void ChatRoomModel::onParticipantRemoved(const std::shared_ptr & chatRoom, const std::shared_ptr & eventLog){ + auto events = chatRoom->getHistoryEvents(0); + auto e = std::find(events.begin(), events.end(), eventLog); + if( e != events.end() ) + insertNotice(*e); setLastUpdateTime(QDateTime::fromMSecsSinceEpoch(chatRoom->getLastUpdateTime())); emit participantAdminStatusChanged(chatRoom, eventLog); emit isMeAdminChanged(); // It is not the case all the time but calling getters is not a heavy request @@ -1063,6 +1067,10 @@ void ChatRoomModel::onSecurityEvent(const std::shared_ptr & emit securityLevelChanged((int)chatRoom->getSecurityLevel()); } void ChatRoomModel::onSubjectChanged(const std::shared_ptr & chatRoom, const std::shared_ptr & eventLog) { + auto events = chatRoom->getHistoryEvents(0); + auto e = std::find(events.begin(), events.end(), eventLog); + if( e != events.end() ) + insertNotice(*e); setLastUpdateTime(QDateTime::fromMSecsSinceEpoch(chatRoom->getLastUpdateTime())); emit subjectChanged(getSubject()); emit usernameChanged(); diff --git a/linphone-app/ui/modules/Linphone/Chat/Notice.qml b/linphone-app/ui/modules/Linphone/Chat/Notice.qml index fc1e2fd12..0e22ffd74 100644 --- a/linphone-app/ui/modules/Linphone/Chat/Notice.qml +++ b/linphone-app/ui/modules/Linphone/Chat/Notice.qml @@ -36,10 +36,10 @@ RowLayout{ return '%1 has left'; } if (status == LinphoneEnums.EventLogTypeConferenceParticipantSetAdmin) { - return 'EventLogTypeConferenceParticipantSetAdmin'; + return '%1 is now an admin'; } if (status == LinphoneEnums.EventLogTypeConferenceParticipantUnsetAdmin) { - return 'EventLogTypeConferenceParticipantUnsetAdmin'; + return '%1 is no more an admin'; } if (status == LinphoneEnums.EventLogTypeConferenceParticipantDeviceAdded) { return 'EventLogTypeConferenceParticipantDeviceAdded'; @@ -65,6 +65,10 @@ RowLayout{ if (status == LinphoneEnums.EventLogTypeConferenceEphemeralMessageDisabled) { return 'You disabled ephemeral messages'; } + if (status == LinphoneEnums.EventLogTypeConferenceSubjectChanged) { + return 'New subject : %1'; + } + return 'unknown_notice' }