mirror of
https://gitlab.linphone.org/BC/public/linphone-desktop.git
synced 2026-02-05 05:49:40 +00:00
Merge branch 'fix/6.1' into 'release/6.1'
Fixes See merge request BC/public/linphone-desktop!1661
This commit is contained in:
commit
83cc37c819
14 changed files with 65 additions and 43 deletions
|
|
@ -230,9 +230,11 @@ void ChatMessageCore::setSelf(QSharedPointer<ChatMessageCore> me) {
|
|||
});
|
||||
}
|
||||
});
|
||||
mChatMessageModelConnection->makeConnectToModel(&ChatMessageModel::messageRead, [this]() {
|
||||
mChatMessageModelConnection->invokeToCore([this] { setIsRead(true); });
|
||||
});
|
||||
mChatMessageModelConnection->makeConnectToModel(
|
||||
&ChatMessageModel::messageRead, [this](const std::shared_ptr<linphone::ChatMessage> &chatMessage) {
|
||||
bool isRead = chatMessage->isRead();
|
||||
mChatMessageModelConnection->invokeToCore([this, isRead] { setIsRead(isRead); });
|
||||
});
|
||||
mChatMessageModelConnection->makeConnectToCore(&ChatMessageCore::lSendReaction, [this](const QString &reaction) {
|
||||
mChatMessageModelConnection->invokeToModel([this, reaction] { mChatMessageModel->sendReaction(reaction); });
|
||||
});
|
||||
|
|
|
|||
|
|
@ -298,12 +298,14 @@ void EventLogList::setSelf(QSharedPointer<EventLogList> me) {
|
|||
if (!mChatCore) {
|
||||
endResetModel();
|
||||
setIsUpdating(false);
|
||||
emit modelUpdated();
|
||||
return;
|
||||
}
|
||||
auto chatModel = mChatCore->getModel();
|
||||
if (!chatModel) {
|
||||
endResetModel();
|
||||
setIsUpdating(false);
|
||||
emit modelUpdated();
|
||||
return;
|
||||
}
|
||||
mCoreModelConnection->invokeToModel([this, chatModel]() {
|
||||
|
|
@ -321,6 +323,7 @@ void EventLogList::setSelf(QSharedPointer<EventLogList> me) {
|
|||
}
|
||||
endResetModel();
|
||||
setIsUpdating(false);
|
||||
emit modelUpdated();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
|
|||
|
|
@ -67,6 +67,7 @@ public:
|
|||
|
||||
signals:
|
||||
void lUpdate();
|
||||
void modelUpdated();
|
||||
void filterChanged(QString filter);
|
||||
void eventInsertedByUser(int index);
|
||||
void messageWithFilterFound(int index);
|
||||
|
|
|
|||
|
|
@ -57,6 +57,7 @@ void EventLogProxy::setSourceModel(QAbstractItemModel *model) {
|
|||
int proxyIndex = mapFromSource(newEventLogList->index(i, 0)).row();
|
||||
emit eventInsertedByUser(proxyIndex);
|
||||
});
|
||||
connect(newEventLogList, &EventLogList::modelUpdated, this, &EventLogProxy::modelUpdated);
|
||||
}
|
||||
QSortFilterProxyModel::setSourceModel(model);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -87,6 +87,7 @@ signals:
|
|||
void maxDisplayItemsChanged();
|
||||
void displayItemsStepChanged();
|
||||
void filterTextChanged();
|
||||
void modelUpdated();
|
||||
|
||||
protected:
|
||||
QSharedPointer<EventLogList> mList;
|
||||
|
|
|
|||
|
|
@ -49,7 +49,7 @@ MagicSearchList::~MagicSearchList() {
|
|||
mustBeInMainThread("~" + getClassName());
|
||||
}
|
||||
|
||||
void MagicSearchList::setSelf(QSharedPointer<MagicSearchList> me) {
|
||||
void MagicSearchList::setSelf(const QSharedPointer<MagicSearchList> &me) {
|
||||
mCoreModelConnection = SafeConnection<MagicSearchList, CoreModel>::create(me, CoreModel::getInstance());
|
||||
mCoreModelConnection->makeConnectToModel(
|
||||
&CoreModel::friendCreated, [this](const std::shared_ptr<linphone::Friend> &f) {
|
||||
|
|
|
|||
|
|
@ -40,7 +40,7 @@ public:
|
|||
MagicSearchList(QObject *parent = Q_NULLPTR);
|
||||
~MagicSearchList();
|
||||
|
||||
void setSelf(QSharedPointer<MagicSearchList> me);
|
||||
void setSelf(const QSharedPointer<MagicSearchList> &me);
|
||||
void connectContact(FriendCore *data);
|
||||
void setSearch(const QString &search);
|
||||
void setResults(const QList<QSharedPointer<FriendCore>> &contacts);
|
||||
|
|
|
|||
|
|
@ -2472,44 +2472,44 @@ Error</extracomment>
|
|||
<context>
|
||||
<name>ChatMessagesListView</name>
|
||||
<message>
|
||||
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="107"/>
|
||||
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="118"/>
|
||||
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="110"/>
|
||||
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="121"/>
|
||||
<source>popup_info_find_message_title</source>
|
||||
<extracomment>Find message</extracomment>
|
||||
<translation>Nachricht suchen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="120"/>
|
||||
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="123"/>
|
||||
<source>info_popup_no_result_message</source>
|
||||
<extracomment>No result found</extracomment>
|
||||
<translation>Keine Ergebnisse gefunden</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="112"/>
|
||||
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="115"/>
|
||||
<source>info_popup_first_result_message</source>
|
||||
<extracomment>First result reached</extracomment>
|
||||
<translation>Erstes Ergebnis erreicht</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="110"/>
|
||||
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="113"/>
|
||||
<source>info_popup_last_result_message</source>
|
||||
<extracomment>Last result reached</extracomment>
|
||||
<translation>Letztes Ergebnis erreicht</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="157"/>
|
||||
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="160"/>
|
||||
<source>chat_message_list_encrypted_header_title</source>
|
||||
<extracomment>End to end encrypted chat</extracomment>
|
||||
<translation>Ende-zu-Ende-verschlüsselter Chat</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="159"/>
|
||||
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="162"/>
|
||||
<source>unencrypted_conversation_warning</source>
|
||||
<extracomment>This conversation is not encrypted !</extracomment>
|
||||
<translation>Dieser Chat ist nicht verschlüsselt!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="170"/>
|
||||
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="173"/>
|
||||
<source>chat_message_list_encrypted_header_message</source>
|
||||
<extracomment>Messages in this conversation are e2e encrypted.
|
||||
Only your correspondent can decrypt them.</extracomment>
|
||||
|
|
@ -2517,7 +2517,7 @@ Error</extracomment>
|
|||
Nur Ihr Gesprächspartner kann sie entschlüsseln.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="172"/>
|
||||
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="175"/>
|
||||
<source>chat_message_list_not_encrypted_header_message</source>
|
||||
<extracomment>Messages are not end to end encrypted,
|
||||
may sure you don't share any sensitive information !</extracomment>
|
||||
|
|
@ -2525,7 +2525,7 @@ Nur Ihr Gesprächspartner kann sie entschlüsseln.</translation>
|
|||
Stellen Sie sicher, dass Sie keine sensiblen Informationen teilen!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="212"/>
|
||||
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="215"/>
|
||||
<source>chat_message_is_writing_info</source>
|
||||
<extracomment>%1 is writing…</extracomment>
|
||||
<translation>%1 schreibt…</translation>
|
||||
|
|
|
|||
|
|
@ -2430,44 +2430,44 @@ Error</extracomment>
|
|||
<context>
|
||||
<name>ChatMessagesListView</name>
|
||||
<message>
|
||||
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="107"/>
|
||||
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="118"/>
|
||||
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="110"/>
|
||||
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="121"/>
|
||||
<source>popup_info_find_message_title</source>
|
||||
<extracomment>Find message</extracomment>
|
||||
<translation>Find message</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="120"/>
|
||||
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="123"/>
|
||||
<source>info_popup_no_result_message</source>
|
||||
<extracomment>No result found</extracomment>
|
||||
<translation>No result found</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="112"/>
|
||||
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="115"/>
|
||||
<source>info_popup_first_result_message</source>
|
||||
<extracomment>First result reached</extracomment>
|
||||
<translation>First result reached</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="110"/>
|
||||
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="113"/>
|
||||
<source>info_popup_last_result_message</source>
|
||||
<extracomment>Last result reached</extracomment>
|
||||
<translation>Last result reached</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="157"/>
|
||||
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="160"/>
|
||||
<source>chat_message_list_encrypted_header_title</source>
|
||||
<extracomment>End to end encrypted chat</extracomment>
|
||||
<translation>End to end encrypted chat</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="159"/>
|
||||
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="162"/>
|
||||
<source>unencrypted_conversation_warning</source>
|
||||
<extracomment>This conversation is not encrypted !</extracomment>
|
||||
<translation>This conversation is not encrypted !</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="170"/>
|
||||
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="173"/>
|
||||
<source>chat_message_list_encrypted_header_message</source>
|
||||
<extracomment>Messages in this conversation are e2e encrypted.
|
||||
Only your correspondent can decrypt them.</extracomment>
|
||||
|
|
@ -2475,7 +2475,7 @@ Error</extracomment>
|
|||
Only your correspondent can decrypt them.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="172"/>
|
||||
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="175"/>
|
||||
<source>chat_message_list_not_encrypted_header_message</source>
|
||||
<extracomment>Messages are not end to end encrypted,
|
||||
may sure you don't share any sensitive information !</extracomment>
|
||||
|
|
@ -2483,7 +2483,7 @@ Only your correspondent can decrypt them.</translation>
|
|||
may sure you don't share any sensitive information !</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="212"/>
|
||||
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="215"/>
|
||||
<source>chat_message_is_writing_info</source>
|
||||
<extracomment>%1 is writing…</extracomment>
|
||||
<translation>%1 is writing…</translation>
|
||||
|
|
|
|||
|
|
@ -2405,44 +2405,44 @@ Error</extracomment>
|
|||
<context>
|
||||
<name>ChatMessagesListView</name>
|
||||
<message>
|
||||
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="107"/>
|
||||
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="118"/>
|
||||
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="110"/>
|
||||
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="121"/>
|
||||
<source>popup_info_find_message_title</source>
|
||||
<extracomment>Find message</extracomment>
|
||||
<translation>Trouver un message</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="120"/>
|
||||
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="123"/>
|
||||
<source>info_popup_no_result_message</source>
|
||||
<extracomment>No result found</extracomment>
|
||||
<translation>Aucun résultat trouvé</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="112"/>
|
||||
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="115"/>
|
||||
<source>info_popup_first_result_message</source>
|
||||
<extracomment>First result reached</extracomment>
|
||||
<translation>Premier résultat atteint</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="110"/>
|
||||
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="113"/>
|
||||
<source>info_popup_last_result_message</source>
|
||||
<extracomment>Last result reached</extracomment>
|
||||
<translation>Dernier résultat atteint</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="157"/>
|
||||
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="160"/>
|
||||
<source>chat_message_list_encrypted_header_title</source>
|
||||
<extracomment>End to end encrypted chat</extracomment>
|
||||
<translation>Conversation chiffrée de bout en bout</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="159"/>
|
||||
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="162"/>
|
||||
<source>unencrypted_conversation_warning</source>
|
||||
<extracomment>This conversation is not encrypted !</extracomment>
|
||||
<translation>Cette conversation n'est pas chiffrée !</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="170"/>
|
||||
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="173"/>
|
||||
<source>chat_message_list_encrypted_header_message</source>
|
||||
<extracomment>Messages in this conversation are e2e encrypted.
|
||||
Only your correspondent can decrypt them.</extracomment>
|
||||
|
|
@ -2450,7 +2450,7 @@ Error</extracomment>
|
|||
en bout. Seul votre correspondant peut les déchiffrer.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="172"/>
|
||||
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="175"/>
|
||||
<source>chat_message_list_not_encrypted_header_message</source>
|
||||
<extracomment>Messages are not end to end encrypted,
|
||||
may sure you don't share any sensitive information !</extracomment>
|
||||
|
|
@ -2458,7 +2458,7 @@ en bout. Seul votre correspondant peut les déchiffrer.</translation>
|
|||
assurez-vous de ne pas partager d’informations sensibles !</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="212"/>
|
||||
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="215"/>
|
||||
<source>chat_message_is_writing_info</source>
|
||||
<extracomment>%1 is writing…</extracomment>
|
||||
<translation>%1 est en train d'écrire…</translation>
|
||||
|
|
|
|||
|
|
@ -44,6 +44,15 @@ ChatMessageModel::ChatMessageModel(const std::shared_ptr<linphone::ChatMessage>
|
|||
mEphemeralTimer.stop();
|
||||
deleteMessageFromChatRoom(false);
|
||||
});
|
||||
// We need to force this signal sending because there is no callback to know when a message has been read
|
||||
connect(CoreModel::getInstance().get(), &CoreModel::chatRoomRead, this,
|
||||
[this](const std::shared_ptr<linphone::Core> &core, const std::shared_ptr<linphone::ChatRoom> &chatRoom) {
|
||||
if (chatRoom == mMonitor->getChatRoom()) {
|
||||
if (mMonitor->isRead()) {
|
||||
emit messageRead(mMonitor);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
ChatMessageModel::~ChatMessageModel() {
|
||||
|
|
@ -91,7 +100,7 @@ bool ChatMessageModel::isRead() const {
|
|||
|
||||
void ChatMessageModel::markAsRead() {
|
||||
mMonitor->markAsRead();
|
||||
emit messageRead();
|
||||
emit messageRead(mMonitor);
|
||||
emit CoreModel::getInstance()->messageReadInChatRoom(mMonitor->getChatRoom());
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -65,7 +65,7 @@ public:
|
|||
|
||||
signals:
|
||||
void messageDeleted(bool deletedByUser);
|
||||
void messageRead();
|
||||
void messageRead(const std::shared_ptr<linphone::ChatMessage> &chatMessage);
|
||||
|
||||
void msgStateChanged(const std::shared_ptr<linphone::ChatMessage> &message, linphone::ChatMessage::State state);
|
||||
void newMessageReaction(const std::shared_ptr<linphone::ChatMessage> &message,
|
||||
|
|
@ -99,6 +99,7 @@ signals:
|
|||
private:
|
||||
linphone::ChatMessage::State mMessageState;
|
||||
QTimer mEphemeralTimer;
|
||||
std::weak_ptr<linphone::ChatRoom> mChatRoom;
|
||||
|
||||
DECLARE_ABSTRACT_OBJECT
|
||||
|
||||
|
|
|
|||
|
|
@ -32,7 +32,8 @@ DEFINE_ABSTRACT_OBJECT(ConferenceInfoModel)
|
|||
|
||||
ConferenceInfoModel::ConferenceInfoModel(const std::shared_ptr<linphone::ConferenceInfo> &conferenceInfo,
|
||||
QObject *parent)
|
||||
: mConferenceInfo(conferenceInfo) {
|
||||
// TODO : remove cloning when a fix will be done in SDK (#SDK-1001 ticket)
|
||||
: mConferenceInfo(conferenceInfo->clone()) {
|
||||
mustBeInLinphoneThread(getClassName());
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@ ListView {
|
|||
property real busyIndicatorSize: Utils.getSizeWithScreenRatio(60)
|
||||
property bool loading: false
|
||||
property bool isEncrypted: chat && chat.core.isEncrypted
|
||||
highlightFollowsCurrentItem: false
|
||||
highlightFollowsCurrentItem: true
|
||||
|
||||
verticalLayoutDirection: ListView.BottomToTop
|
||||
signal showReactionsForMessageRequested(ChatMessageGui chatMessage)
|
||||
|
|
@ -73,7 +73,7 @@ ListView {
|
|||
onAtYBeginningChanged: if (atYBeginning && count !== 0) {
|
||||
eventLogProxy.displayMore()
|
||||
}
|
||||
onAtYEndChanged: if (atYEnd && chat) {
|
||||
onAtYEndChanged: if (atYEnd && chat && count !== 0) {
|
||||
chat.core.lMarkAsRead()
|
||||
}
|
||||
|
||||
|
|
@ -86,10 +86,13 @@ ListView {
|
|||
onModelAboutToBeReset: {
|
||||
loading = true
|
||||
}
|
||||
onModelReset: {
|
||||
onModelUpdated: {
|
||||
loading = false
|
||||
var index = eventLogProxy.findFirstUnreadIndex()
|
||||
mainItem.positionViewAtIndex(index, ListView.Contain)
|
||||
var itemToSelect = mainItem.itemAtIndex(index)
|
||||
mainItem.positionViewAtIndex(index, ListView.Beginning)
|
||||
var lastMessage = itemAtIndex(0)
|
||||
mainItem.lastItemVisible = lastMessage.isFullyVisible
|
||||
eventLogProxy.markIndexAsRead(index)
|
||||
}
|
||||
onEventInsertedByUser: (index) => {
|
||||
|
|
@ -224,7 +227,7 @@ ListView {
|
|||
indicatorWidth: mainItem.busyIndicatorSize
|
||||
indicatorColor: DefaultStyle.main1_500_main
|
||||
}
|
||||
|
||||
|
||||
delegate: DelegateChooser {
|
||||
role: "eventType"
|
||||
DelegateChoice {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue