/
lmaxyz
/
telegraf
Обзор
Документация
Войти
/
lmaxyz
/
telegraf
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
develop
src/data/covermessagesmodel.cpp
49 строк
2 KB
mbarashkov
Корректно убираем с обложкит прочитанные сообщения
19 авг 2025, 17:04
19 авг 2025, 17:04
44706e2
Код
Авторство
О чём код?
#include "covermessagesmodel.h" #include "chatlistmodel.h" #include "../debuglog.h" CoverMessagesModel* CoverMessagesModel::instance; CoverMessagesModel::CoverMessagesModel(QObject *parent): QObject(parent) { CoverMessagesModel::instance = this; connect(ChatListModel::getInstance(), SIGNAL(unmutedChatLastMessageUpdated(ChatData*)), this, SLOT(handleUnmutedChatLastMessageUpdated(ChatData*))); connect(ChatListModel::getInstance(), SIGNAL(unmutedChatLastMessageCleared(qlonglong)), this, SLOT(handleUnmutedChatLastMessageCleared(qlonglong))); } void CoverMessagesModel::handleUnmutedChatLastMessageCleared(qlonglong chatId) { auto changed = false; QList<QObject*> newUnmutedChatsLastMessages; for(auto i = 0; i < unmutedChatsLastMessages.count(); i++) { auto message = qobject_cast<ChatData*>(unmutedChatsLastMessages[i]); if(message->chatId == chatId) { changed = true; } else { newUnmutedChatsLastMessages.append(message); } } if(changed) { unmutedChatsLastMessages = newUnmutedChatsLastMessages; emit unmutedChatsLastMessagesChanged(unmutedChatsLastMessages); } } void CoverMessagesModel::handleUnmutedChatLastMessageUpdated(ChatData *chatData) { unmutedChatsLastMessages.prepend(chatData); std::sort(unmutedChatsLastMessages.begin(), unmutedChatsLastMessages.end(), [](const QObject* a, const QObject* b) { const ChatData* chatDataA = qobject_cast<const ChatData*>(a); const ChatData* chatDataB = qobject_cast<const ChatData*>(b); return chatDataA->senderMessageDate() > chatDataB->senderMessageDate(); }); emit unmutedChatsLastMessagesChanged(unmutedChatsLastMessages); }