diff --git a/tests/src/components/chat/ChatModel.cpp b/tests/src/components/chat/ChatModel.cpp index 007cb0c57..a9194bfba 100644 --- a/tests/src/components/chat/ChatModel.cpp +++ b/tests/src/components/chat/ChatModel.cpp @@ -14,6 +14,15 @@ using namespace std; // ============================================================================= class ChatModel::MessageHandlers : public linphone::ChatMessageListener { +public: + MessageHandlers (ChatModel *chat_model) : m_chat_model(chat_model) {} + + ~MessageHandlers () { + qDebug() << "handlers"; + } + +private: + void onFileTransferRecv ( const shared_ptr &message, const shared_ptr &content, @@ -41,19 +50,21 @@ class ChatModel::MessageHandlers : public linphone::ChatMessageListener { } void onMsgStateChanged (const shared_ptr &message, linphone::ChatMessageState state) override { - ChatModel *chat = static_cast(message->getUserData()); + ChatModel &chat = *m_chat_model; - auto it = find_if(chat->m_entries.begin(), chat->m_entries.end(), [&message](const ChatEntryData &pair) { + auto it = find_if(chat.m_entries.begin(), chat.m_entries.end(), [&message](const ChatEntryData &pair) { return pair.second == message; }); - if (it == chat->m_entries.end()) + if (it == chat.m_entries.end()) return; (*it).first["state"] = state; - int row = distance(chat->m_entries.begin(), it); + int row = distance(chat.m_entries.begin(), it); - emit chat->dataChanged(chat->index(row, 0), chat->index(row, 0)); + emit chat.dataChanged(chat.index(row, 0), chat.index(row, 0)); } + + ChatModel *m_chat_model; }; // ----------------------------------------------------------------------------- @@ -227,8 +238,7 @@ void ChatModel::removeAllEntries () { void ChatModel::sendMessage (const QString &message) { shared_ptr _message = m_chat_room->createMessage(::Utils::qStringToLinphoneString(message)); - _message->setUserData(this); - _message->setListener(m_message_handlers); + _message->setListener(make_shared(this)); m_chat_room->sendChatMessage(_message); insertMessageAtEnd(_message); } diff --git a/tests/src/components/chat/ChatModel.hpp b/tests/src/components/chat/ChatModel.hpp index 6066f1b0e..ffe8a1d83 100644 --- a/tests/src/components/chat/ChatModel.hpp +++ b/tests/src/components/chat/ChatModel.hpp @@ -96,7 +96,6 @@ private: std::shared_ptr m_chat_room; std::shared_ptr m_core_handlers; - std::shared_ptr m_message_handlers; }; #endif // CHAT_MODEL_H_