clone the linphone conference info pointer when created to get the diff with the old ones (needed to fix participant removing) #SDK-1001
fix position chat message list to first unread index #LINQT-2371 force sending chat message messageRead() callback when chat room is marked as read try to fix crash with const & in MagicSearchList
This commit is contained in:
parent
4c9d6b4d7c
commit
50efe4d54a
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->makeConnectToModel(
|
||||||
mChatMessageModelConnection->invokeToCore([this] { setIsRead(true); });
|
&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->makeConnectToCore(&ChatMessageCore::lSendReaction, [this](const QString &reaction) {
|
||||||
mChatMessageModelConnection->invokeToModel([this, reaction] { mChatMessageModel->sendReaction(reaction); });
|
mChatMessageModelConnection->invokeToModel([this, reaction] { mChatMessageModel->sendReaction(reaction); });
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -298,12 +298,14 @@ void EventLogList::setSelf(QSharedPointer<EventLogList> me) {
|
||||||
if (!mChatCore) {
|
if (!mChatCore) {
|
||||||
endResetModel();
|
endResetModel();
|
||||||
setIsUpdating(false);
|
setIsUpdating(false);
|
||||||
|
emit modelUpdated();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
auto chatModel = mChatCore->getModel();
|
auto chatModel = mChatCore->getModel();
|
||||||
if (!chatModel) {
|
if (!chatModel) {
|
||||||
endResetModel();
|
endResetModel();
|
||||||
setIsUpdating(false);
|
setIsUpdating(false);
|
||||||
|
emit modelUpdated();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
mCoreModelConnection->invokeToModel([this, chatModel]() {
|
mCoreModelConnection->invokeToModel([this, chatModel]() {
|
||||||
|
|
@ -321,6 +323,7 @@ void EventLogList::setSelf(QSharedPointer<EventLogList> me) {
|
||||||
}
|
}
|
||||||
endResetModel();
|
endResetModel();
|
||||||
setIsUpdating(false);
|
setIsUpdating(false);
|
||||||
|
emit modelUpdated();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -67,6 +67,7 @@ public:
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void lUpdate();
|
void lUpdate();
|
||||||
|
void modelUpdated();
|
||||||
void filterChanged(QString filter);
|
void filterChanged(QString filter);
|
||||||
void eventInsertedByUser(int index);
|
void eventInsertedByUser(int index);
|
||||||
void messageWithFilterFound(int index);
|
void messageWithFilterFound(int index);
|
||||||
|
|
|
||||||
|
|
@ -57,6 +57,7 @@ void EventLogProxy::setSourceModel(QAbstractItemModel *model) {
|
||||||
int proxyIndex = mapFromSource(newEventLogList->index(i, 0)).row();
|
int proxyIndex = mapFromSource(newEventLogList->index(i, 0)).row();
|
||||||
emit eventInsertedByUser(proxyIndex);
|
emit eventInsertedByUser(proxyIndex);
|
||||||
});
|
});
|
||||||
|
connect(newEventLogList, &EventLogList::modelUpdated, this, &EventLogProxy::modelUpdated);
|
||||||
}
|
}
|
||||||
QSortFilterProxyModel::setSourceModel(model);
|
QSortFilterProxyModel::setSourceModel(model);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -87,6 +87,7 @@ signals:
|
||||||
void maxDisplayItemsChanged();
|
void maxDisplayItemsChanged();
|
||||||
void displayItemsStepChanged();
|
void displayItemsStepChanged();
|
||||||
void filterTextChanged();
|
void filterTextChanged();
|
||||||
|
void modelUpdated();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
QSharedPointer<EventLogList> mList;
|
QSharedPointer<EventLogList> mList;
|
||||||
|
|
|
||||||
|
|
@ -49,7 +49,7 @@ MagicSearchList::~MagicSearchList() {
|
||||||
mustBeInMainThread("~" + getClassName());
|
mustBeInMainThread("~" + getClassName());
|
||||||
}
|
}
|
||||||
|
|
||||||
void MagicSearchList::setSelf(QSharedPointer<MagicSearchList> me) {
|
void MagicSearchList::setSelf(const QSharedPointer<MagicSearchList> &me) {
|
||||||
mCoreModelConnection = SafeConnection<MagicSearchList, CoreModel>::create(me, CoreModel::getInstance());
|
mCoreModelConnection = SafeConnection<MagicSearchList, CoreModel>::create(me, CoreModel::getInstance());
|
||||||
mCoreModelConnection->makeConnectToModel(
|
mCoreModelConnection->makeConnectToModel(
|
||||||
&CoreModel::friendCreated, [this](const std::shared_ptr<linphone::Friend> &f) {
|
&CoreModel::friendCreated, [this](const std::shared_ptr<linphone::Friend> &f) {
|
||||||
|
|
|
||||||
|
|
@ -40,7 +40,7 @@ public:
|
||||||
MagicSearchList(QObject *parent = Q_NULLPTR);
|
MagicSearchList(QObject *parent = Q_NULLPTR);
|
||||||
~MagicSearchList();
|
~MagicSearchList();
|
||||||
|
|
||||||
void setSelf(QSharedPointer<MagicSearchList> me);
|
void setSelf(const QSharedPointer<MagicSearchList> &me);
|
||||||
void connectContact(FriendCore *data);
|
void connectContact(FriendCore *data);
|
||||||
void setSearch(const QString &search);
|
void setSearch(const QString &search);
|
||||||
void setResults(const QList<QSharedPointer<FriendCore>> &contacts);
|
void setResults(const QList<QSharedPointer<FriendCore>> &contacts);
|
||||||
|
|
|
||||||
|
|
@ -2472,44 +2472,44 @@ Error</extracomment>
|
||||||
<context>
|
<context>
|
||||||
<name>ChatMessagesListView</name>
|
<name>ChatMessagesListView</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="107"/>
|
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="110"/>
|
||||||
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="118"/>
|
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="121"/>
|
||||||
<source>popup_info_find_message_title</source>
|
<source>popup_info_find_message_title</source>
|
||||||
<extracomment>Find message</extracomment>
|
<extracomment>Find message</extracomment>
|
||||||
<translation>Nachricht suchen</translation>
|
<translation>Nachricht suchen</translation>
|
||||||
</message>
|
</message>
|
||||||
<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>
|
<source>info_popup_no_result_message</source>
|
||||||
<extracomment>No result found</extracomment>
|
<extracomment>No result found</extracomment>
|
||||||
<translation>Keine Ergebnisse gefunden</translation>
|
<translation>Keine Ergebnisse gefunden</translation>
|
||||||
</message>
|
</message>
|
||||||
<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>
|
<source>info_popup_first_result_message</source>
|
||||||
<extracomment>First result reached</extracomment>
|
<extracomment>First result reached</extracomment>
|
||||||
<translation>Erstes Ergebnis erreicht</translation>
|
<translation>Erstes Ergebnis erreicht</translation>
|
||||||
</message>
|
</message>
|
||||||
<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>
|
<source>info_popup_last_result_message</source>
|
||||||
<extracomment>Last result reached</extracomment>
|
<extracomment>Last result reached</extracomment>
|
||||||
<translation>Letztes Ergebnis erreicht</translation>
|
<translation>Letztes Ergebnis erreicht</translation>
|
||||||
</message>
|
</message>
|
||||||
<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>
|
<source>chat_message_list_encrypted_header_title</source>
|
||||||
<extracomment>End to end encrypted chat</extracomment>
|
<extracomment>End to end encrypted chat</extracomment>
|
||||||
<translation>Ende-zu-Ende-verschlüsselter Chat</translation>
|
<translation>Ende-zu-Ende-verschlüsselter Chat</translation>
|
||||||
</message>
|
</message>
|
||||||
<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>
|
<source>unencrypted_conversation_warning</source>
|
||||||
<extracomment>This conversation is not encrypted !</extracomment>
|
<extracomment>This conversation is not encrypted !</extracomment>
|
||||||
<translation>Dieser Chat ist nicht verschlüsselt!</translation>
|
<translation>Dieser Chat ist nicht verschlüsselt!</translation>
|
||||||
</message>
|
</message>
|
||||||
<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>
|
<source>chat_message_list_encrypted_header_message</source>
|
||||||
<extracomment>Messages in this conversation are e2e encrypted.
|
<extracomment>Messages in this conversation are e2e encrypted.
|
||||||
Only your correspondent can decrypt them.</extracomment>
|
Only your correspondent can decrypt them.</extracomment>
|
||||||
|
|
@ -2517,7 +2517,7 @@ Error</extracomment>
|
||||||
Nur Ihr Gesprächspartner kann sie entschlüsseln.</translation>
|
Nur Ihr Gesprächspartner kann sie entschlüsseln.</translation>
|
||||||
</message>
|
</message>
|
||||||
<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>
|
<source>chat_message_list_not_encrypted_header_message</source>
|
||||||
<extracomment>Messages are not end to end encrypted,
|
<extracomment>Messages are not end to end encrypted,
|
||||||
may sure you don't share any sensitive information !</extracomment>
|
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>
|
Stellen Sie sicher, dass Sie keine sensiblen Informationen teilen!</translation>
|
||||||
</message>
|
</message>
|
||||||
<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>
|
<source>chat_message_is_writing_info</source>
|
||||||
<extracomment>%1 is writing…</extracomment>
|
<extracomment>%1 is writing…</extracomment>
|
||||||
<translation>%1 schreibt…</translation>
|
<translation>%1 schreibt…</translation>
|
||||||
|
|
|
||||||
|
|
@ -2430,44 +2430,44 @@ Error</extracomment>
|
||||||
<context>
|
<context>
|
||||||
<name>ChatMessagesListView</name>
|
<name>ChatMessagesListView</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="107"/>
|
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="110"/>
|
||||||
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="118"/>
|
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="121"/>
|
||||||
<source>popup_info_find_message_title</source>
|
<source>popup_info_find_message_title</source>
|
||||||
<extracomment>Find message</extracomment>
|
<extracomment>Find message</extracomment>
|
||||||
<translation>Find message</translation>
|
<translation>Find message</translation>
|
||||||
</message>
|
</message>
|
||||||
<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>
|
<source>info_popup_no_result_message</source>
|
||||||
<extracomment>No result found</extracomment>
|
<extracomment>No result found</extracomment>
|
||||||
<translation>No result found</translation>
|
<translation>No result found</translation>
|
||||||
</message>
|
</message>
|
||||||
<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>
|
<source>info_popup_first_result_message</source>
|
||||||
<extracomment>First result reached</extracomment>
|
<extracomment>First result reached</extracomment>
|
||||||
<translation>First result reached</translation>
|
<translation>First result reached</translation>
|
||||||
</message>
|
</message>
|
||||||
<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>
|
<source>info_popup_last_result_message</source>
|
||||||
<extracomment>Last result reached</extracomment>
|
<extracomment>Last result reached</extracomment>
|
||||||
<translation>Last result reached</translation>
|
<translation>Last result reached</translation>
|
||||||
</message>
|
</message>
|
||||||
<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>
|
<source>chat_message_list_encrypted_header_title</source>
|
||||||
<extracomment>End to end encrypted chat</extracomment>
|
<extracomment>End to end encrypted chat</extracomment>
|
||||||
<translation>End to end encrypted chat</translation>
|
<translation>End to end encrypted chat</translation>
|
||||||
</message>
|
</message>
|
||||||
<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>
|
<source>unencrypted_conversation_warning</source>
|
||||||
<extracomment>This conversation is not encrypted !</extracomment>
|
<extracomment>This conversation is not encrypted !</extracomment>
|
||||||
<translation>This conversation is not encrypted !</translation>
|
<translation>This conversation is not encrypted !</translation>
|
||||||
</message>
|
</message>
|
||||||
<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>
|
<source>chat_message_list_encrypted_header_message</source>
|
||||||
<extracomment>Messages in this conversation are e2e encrypted.
|
<extracomment>Messages in this conversation are e2e encrypted.
|
||||||
Only your correspondent can decrypt them.</extracomment>
|
Only your correspondent can decrypt them.</extracomment>
|
||||||
|
|
@ -2475,7 +2475,7 @@ Error</extracomment>
|
||||||
Only your correspondent can decrypt them.</translation>
|
Only your correspondent can decrypt them.</translation>
|
||||||
</message>
|
</message>
|
||||||
<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>
|
<source>chat_message_list_not_encrypted_header_message</source>
|
||||||
<extracomment>Messages are not end to end encrypted,
|
<extracomment>Messages are not end to end encrypted,
|
||||||
may sure you don't share any sensitive information !</extracomment>
|
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>
|
may sure you don't share any sensitive information !</translation>
|
||||||
</message>
|
</message>
|
||||||
<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>
|
<source>chat_message_is_writing_info</source>
|
||||||
<extracomment>%1 is writing…</extracomment>
|
<extracomment>%1 is writing…</extracomment>
|
||||||
<translation>%1 is writing…</translation>
|
<translation>%1 is writing…</translation>
|
||||||
|
|
|
||||||
|
|
@ -2405,44 +2405,44 @@ Error</extracomment>
|
||||||
<context>
|
<context>
|
||||||
<name>ChatMessagesListView</name>
|
<name>ChatMessagesListView</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="107"/>
|
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="110"/>
|
||||||
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="118"/>
|
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="121"/>
|
||||||
<source>popup_info_find_message_title</source>
|
<source>popup_info_find_message_title</source>
|
||||||
<extracomment>Find message</extracomment>
|
<extracomment>Find message</extracomment>
|
||||||
<translation>Trouver un message</translation>
|
<translation>Trouver un message</translation>
|
||||||
</message>
|
</message>
|
||||||
<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>
|
<source>info_popup_no_result_message</source>
|
||||||
<extracomment>No result found</extracomment>
|
<extracomment>No result found</extracomment>
|
||||||
<translation>Aucun résultat trouvé</translation>
|
<translation>Aucun résultat trouvé</translation>
|
||||||
</message>
|
</message>
|
||||||
<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>
|
<source>info_popup_first_result_message</source>
|
||||||
<extracomment>First result reached</extracomment>
|
<extracomment>First result reached</extracomment>
|
||||||
<translation>Premier résultat atteint</translation>
|
<translation>Premier résultat atteint</translation>
|
||||||
</message>
|
</message>
|
||||||
<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>
|
<source>info_popup_last_result_message</source>
|
||||||
<extracomment>Last result reached</extracomment>
|
<extracomment>Last result reached</extracomment>
|
||||||
<translation>Dernier résultat atteint</translation>
|
<translation>Dernier résultat atteint</translation>
|
||||||
</message>
|
</message>
|
||||||
<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>
|
<source>chat_message_list_encrypted_header_title</source>
|
||||||
<extracomment>End to end encrypted chat</extracomment>
|
<extracomment>End to end encrypted chat</extracomment>
|
||||||
<translation>Conversation chiffrée de bout en bout</translation>
|
<translation>Conversation chiffrée de bout en bout</translation>
|
||||||
</message>
|
</message>
|
||||||
<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>
|
<source>unencrypted_conversation_warning</source>
|
||||||
<extracomment>This conversation is not encrypted !</extracomment>
|
<extracomment>This conversation is not encrypted !</extracomment>
|
||||||
<translation>Cette conversation n'est pas chiffrée !</translation>
|
<translation>Cette conversation n'est pas chiffrée !</translation>
|
||||||
</message>
|
</message>
|
||||||
<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>
|
<source>chat_message_list_encrypted_header_message</source>
|
||||||
<extracomment>Messages in this conversation are e2e encrypted.
|
<extracomment>Messages in this conversation are e2e encrypted.
|
||||||
Only your correspondent can decrypt them.</extracomment>
|
Only your correspondent can decrypt them.</extracomment>
|
||||||
|
|
@ -2450,7 +2450,7 @@ Error</extracomment>
|
||||||
en bout. Seul votre correspondant peut les déchiffrer.</translation>
|
en bout. Seul votre correspondant peut les déchiffrer.</translation>
|
||||||
</message>
|
</message>
|
||||||
<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>
|
<source>chat_message_list_not_encrypted_header_message</source>
|
||||||
<extracomment>Messages are not end to end encrypted,
|
<extracomment>Messages are not end to end encrypted,
|
||||||
may sure you don't share any sensitive information !</extracomment>
|
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>
|
assurez-vous de ne pas partager d’informations sensibles !</translation>
|
||||||
</message>
|
</message>
|
||||||
<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>
|
<source>chat_message_is_writing_info</source>
|
||||||
<extracomment>%1 is writing…</extracomment>
|
<extracomment>%1 is writing…</extracomment>
|
||||||
<translation>%1 est en train d'écrire…</translation>
|
<translation>%1 est en train d'écrire…</translation>
|
||||||
|
|
|
||||||
|
|
@ -44,6 +44,15 @@ ChatMessageModel::ChatMessageModel(const std::shared_ptr<linphone::ChatMessage>
|
||||||
mEphemeralTimer.stop();
|
mEphemeralTimer.stop();
|
||||||
deleteMessageFromChatRoom(false);
|
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() {
|
ChatMessageModel::~ChatMessageModel() {
|
||||||
|
|
@ -91,7 +100,7 @@ bool ChatMessageModel::isRead() const {
|
||||||
|
|
||||||
void ChatMessageModel::markAsRead() {
|
void ChatMessageModel::markAsRead() {
|
||||||
mMonitor->markAsRead();
|
mMonitor->markAsRead();
|
||||||
emit messageRead();
|
emit messageRead(mMonitor);
|
||||||
emit CoreModel::getInstance()->messageReadInChatRoom(mMonitor->getChatRoom());
|
emit CoreModel::getInstance()->messageReadInChatRoom(mMonitor->getChatRoom());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -65,7 +65,7 @@ public:
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void messageDeleted(bool deletedByUser);
|
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 msgStateChanged(const std::shared_ptr<linphone::ChatMessage> &message, linphone::ChatMessage::State state);
|
||||||
void newMessageReaction(const std::shared_ptr<linphone::ChatMessage> &message,
|
void newMessageReaction(const std::shared_ptr<linphone::ChatMessage> &message,
|
||||||
|
|
@ -99,6 +99,7 @@ signals:
|
||||||
private:
|
private:
|
||||||
linphone::ChatMessage::State mMessageState;
|
linphone::ChatMessage::State mMessageState;
|
||||||
QTimer mEphemeralTimer;
|
QTimer mEphemeralTimer;
|
||||||
|
std::weak_ptr<linphone::ChatRoom> mChatRoom;
|
||||||
|
|
||||||
DECLARE_ABSTRACT_OBJECT
|
DECLARE_ABSTRACT_OBJECT
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -32,7 +32,8 @@ DEFINE_ABSTRACT_OBJECT(ConferenceInfoModel)
|
||||||
|
|
||||||
ConferenceInfoModel::ConferenceInfoModel(const std::shared_ptr<linphone::ConferenceInfo> &conferenceInfo,
|
ConferenceInfoModel::ConferenceInfoModel(const std::shared_ptr<linphone::ConferenceInfo> &conferenceInfo,
|
||||||
QObject *parent)
|
QObject *parent)
|
||||||
: mConferenceInfo(conferenceInfo) {
|
// TODO : remove cloning when a fix will be done in SDK (#SDK-1001 ticket)
|
||||||
|
: mConferenceInfo(conferenceInfo->clone()) {
|
||||||
mustBeInLinphoneThread(getClassName());
|
mustBeInLinphoneThread(getClassName());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,7 @@ ListView {
|
||||||
property real busyIndicatorSize: Utils.getSizeWithScreenRatio(60)
|
property real busyIndicatorSize: Utils.getSizeWithScreenRatio(60)
|
||||||
property bool loading: false
|
property bool loading: false
|
||||||
property bool isEncrypted: chat && chat.core.isEncrypted
|
property bool isEncrypted: chat && chat.core.isEncrypted
|
||||||
highlightFollowsCurrentItem: false
|
highlightFollowsCurrentItem: true
|
||||||
|
|
||||||
verticalLayoutDirection: ListView.BottomToTop
|
verticalLayoutDirection: ListView.BottomToTop
|
||||||
signal showReactionsForMessageRequested(ChatMessageGui chatMessage)
|
signal showReactionsForMessageRequested(ChatMessageGui chatMessage)
|
||||||
|
|
@ -73,7 +73,7 @@ ListView {
|
||||||
onAtYBeginningChanged: if (atYBeginning && count !== 0) {
|
onAtYBeginningChanged: if (atYBeginning && count !== 0) {
|
||||||
eventLogProxy.displayMore()
|
eventLogProxy.displayMore()
|
||||||
}
|
}
|
||||||
onAtYEndChanged: if (atYEnd && chat) {
|
onAtYEndChanged: if (atYEnd && chat && count !== 0) {
|
||||||
chat.core.lMarkAsRead()
|
chat.core.lMarkAsRead()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -86,10 +86,13 @@ ListView {
|
||||||
onModelAboutToBeReset: {
|
onModelAboutToBeReset: {
|
||||||
loading = true
|
loading = true
|
||||||
}
|
}
|
||||||
onModelReset: {
|
onModelUpdated: {
|
||||||
loading = false
|
loading = false
|
||||||
var index = eventLogProxy.findFirstUnreadIndex()
|
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)
|
eventLogProxy.markIndexAsRead(index)
|
||||||
}
|
}
|
||||||
onEventInsertedByUser: (index) => {
|
onEventInsertedByUser: (index) => {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue