/
NeoChapay
/
telegraf
Обзор
Документация
Войти
/
NeoChapay
/
telegraf
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
develop
src/chatmodel.h
94 строки
4 KB
Mikhail Barashkov
refactor: remove standard comments from header of all source files
07 сен 2024, 14:40
07 сен 2024, 14:40
c79ea8f
Код
Авторство
О чём код?
#ifndef CHATMODEL_H #define CHATMODEL_H #include <QAbstractListModel> #include "tdlibwrapper.h" class ChatModel : public QAbstractListModel { Q_OBJECT Q_PROPERTY(qlonglong chatId READ getChatId NOTIFY chatIdChanged) Q_PROPERTY(QVariantMap smallPhoto READ smallPhoto NOTIFY smallPhotoChanged) public: ChatModel(TDLibWrapper *tdLibWrapper); ~ChatModel() override; virtual QHash<int,QByteArray> roleNames() const override; virtual int rowCount(const QModelIndex&) const override; virtual QVariant data(const QModelIndex &index, int role) const override; Q_INVOKABLE void clear(bool contentOnly = false); Q_INVOKABLE void initialize(const QVariantMap &chatInformation); Q_INVOKABLE void triggerLoadMoreHistory(); Q_INVOKABLE void triggerLoadHistoryForMessage(qlonglong messageId); Q_INVOKABLE void triggerLoadMoreFuture(); Q_INVOKABLE QVariantMap getChatInformation(); Q_INVOKABLE QVariantMap getMessage(int index); Q_INVOKABLE QVariantList getMessageIdsForAlbum(qlonglong albumId); Q_INVOKABLE QVariantList getMessagesForAlbum(qlonglong albumId, int startAt); Q_INVOKABLE int getLastReadMessageIndex(); Q_INVOKABLE void setSearchQuery(const QString newSearchQuery); Q_INVOKABLE int getDisplayedMessageIndex(qlonglong messageId); QVariantMap smallPhoto() const; qlonglong getChatId() const; signals: void messagesReceived(int modelIndex, int lastReadSentIndex, int totalCount); void messagesIncrementalUpdate(int modelIndex, int lastReadSentIndex); void newMessageReceived(const QVariantMap &message); void unreadCountUpdated(int unreadCount, const QString &lastReadInboxMessageId); void lastReadSentMessageUpdated(int lastReadSentIndex); void notificationSettingsUpdated(); void messageUpdated(int modelIndex); void smallPhotoChanged(); void chatIdChanged(); void pinnedMessageChanged(); private slots: void handleMessagesReceived(const QVariantList &messages, int totalCount); void handleSponsoredMessageReceived(qlonglong chatId, const QVariantMap &sponsoredMessage); void handleNewMessageReceived(qlonglong chatId, const QVariantMap &message); void handleMessageReceived(qlonglong chatId, qlonglong messageId, const QVariantMap &message); void handleChatReadInboxUpdated(const QString &chatId, const QString &lastReadInboxMessageId, int unreadCount); void handleChatReadOutboxUpdated(const QString &chatId, const QString &lastReadOutboxMessageId); void handleMessageSendSucceeded(qlonglong messageId, qlonglong oldMessageId, const QVariantMap &message); void handleChatNotificationSettingsUpdated(const QString &chatId, const QVariantMap &chatNotificationSettings); void handleChatPhotoUpdated(qlonglong chatId, const QVariantMap &photo); void handleChatPinnedMessageUpdated(qlonglong chatId, qlonglong pinnedMessageId); void handleMessageContentUpdated(qlonglong chatId, qlonglong messageId, const QVariantMap &newContent); void handleMessageEditedUpdated(qlonglong chatId, qlonglong messageId, const QVariantMap &replyMarkup); void handleMessageInteractionInfoUpdated(qlonglong chatId, qlonglong messageId, const QVariantMap &updatedInfo); void handleMessagesDeleted(qlonglong chatId, const QList<qlonglong> &messageIds); private: class MessageData; void removeRange(int firstDeleted, int lastDeleted); void insertMessages(const QList<MessageData*> newMessages); void appendMessages(const QList<MessageData*> newMessages); void prependMessages(const QList<MessageData*> newMessages); void updateAlbumMessages(qlonglong albumId, bool checkDeleted); void updateAlbumMessages(QList<qlonglong> albumIds, bool checkDeleted); void setMessagesAlbum(const QList<MessageData*> newMessages); void setMessagesAlbum(MessageData *message); QVariantMap enhanceMessage(const QVariantMap &message); int calculateLastKnownMessageId(); int calculateLastReadSentMessageId(); int calculateScrollPosition(int listInboxPosition); bool isMostRecentMessageLoaded(); private: TDLibWrapper *tdLibWrapper; QList<MessageData*> messages; QHash<qlonglong,int> messageIndexMap; QHash<qlonglong, QVariantList> albumMessageMap; QVariantMap chatInformation; qlonglong chatId; bool inReload; bool inIncrementalUpdate; bool searchModeActive; QString searchQuery; }; #endif // CHATMODEL_H