chatview.h 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. #ifndef CHATVIEW_H
  2. #define CHATVIEW_H
  3. #include <QListView>
  4. #include "chatmessagedelegate.h"
  5. #include "chatmessagemodel.h"
  6. class ChatView : public QListView
  7. {
  8. Q_OBJECT
  9. public:
  10. explicit ChatView(QWidget *parent = nullptr);
  11. void addMessage(const QString &text, const QString &avatar, const QString &senderName, bool isLeft);
  12. void addSystemMessage(const QString &text);
  13. void clear();
  14. signals:
  15. void viewportWidthChanged(int width);
  16. protected:
  17. void mousePressEvent(QMouseEvent *event) override;
  18. void mouseReleaseEvent(QMouseEvent *event) override;
  19. void mouseMoveEvent(QMouseEvent *event) override;
  20. void keyPressEvent(QKeyEvent *event) override;
  21. void contextMenuEvent(QContextMenuEvent *event) override;
  22. void resizeEvent(QResizeEvent *event) override;
  23. private:
  24. ChatMessageModel *m_model;
  25. ChatMessageDelegate *m_delegate;
  26. bool m_selecting;
  27. QModelIndex m_currentMessageIndex;
  28. int m_selectionStartPos = -1;
  29. int m_selectionEndPos = -1;
  30. QMenu *m_contextMenu = nullptr;
  31. QString getSelectedText() const;
  32. void copySelectedText();
  33. void scrollToBottom();
  34. };
  35. #endif // CHATVIEW_H