From 3b0ff1a4cdd0c7eb3ed06eec2e70ee2722b7c4e5 Mon Sep 17 00:00:00 2001 From: Konstantinos Sideris Date: Sat, 15 Apr 2017 02:56:04 +0300 Subject: Add initial support for unread message count - Add border width on Badge --- include/HistoryView.h | 2 +- include/HistoryViewManager.h | 3 +++ include/RoomInfoListItem.h | 7 +++++++ include/RoomList.h | 1 + include/ui/Badge.h | 5 ++++- 5 files changed, 16 insertions(+), 2 deletions(-) (limited to 'include') diff --git a/include/HistoryView.h b/include/HistoryView.h index 09f8bdce..9ca0a156 100644 --- a/include/HistoryView.h +++ b/include/HistoryView.h @@ -54,7 +54,7 @@ public: ~HistoryView(); void addHistoryItem(const Event &event, const QString &color, bool with_sender); - void addEvents(const QList &events); + int addEvents(const QList &events); void addUserTextMessage(const QString &msg, int txn_id); void updatePendingMessage(int txn_id, QString event_id); void clear(); diff --git a/include/HistoryViewManager.h b/include/HistoryViewManager.h index 99ab7384..71700035 100644 --- a/include/HistoryViewManager.h +++ b/include/HistoryViewManager.h @@ -44,6 +44,9 @@ public: static QString getUserColor(const QString &userid); static QMap NICK_COLORS; +signals: + void unreadMessages(QString roomid, int count); + public slots: void setHistoryView(const RoomInfo &info); void sendTextMessage(const QString &msg); diff --git a/include/RoomInfoListItem.h b/include/RoomInfoListItem.h index 8e19abc1..24e84bd3 100644 --- a/include/RoomInfoListItem.h +++ b/include/RoomInfoListItem.h @@ -24,6 +24,7 @@ #include #include "Avatar.h" +#include "Badge.h" #include "RippleOverlay.h" #include "RoomInfo.h" @@ -35,6 +36,9 @@ public: RoomInfoListItem(RoomInfo info, QWidget *parent = 0); ~RoomInfoListItem(); + void updateUnreadMessageCount(int count); + void clearUnreadMessageCount(); + inline bool isPressed(); inline RoomInfo info(); inline void setAvatar(const QImage &avatar_image); @@ -67,12 +71,15 @@ private: QLabel *roomTopic_; Avatar *roomAvatar_; + Badge *unreadMessagesBadge_; QString pressed_style_; QString normal_style_; bool is_pressed_; + int max_height_; + int unread_msg_count_; }; inline bool RoomInfoListItem::isPressed() diff --git a/include/RoomList.h b/include/RoomList.h index 42ded171..d6066166 100644 --- a/include/RoomList.h +++ b/include/RoomList.h @@ -52,6 +52,7 @@ signals: public slots: void updateRoomAvatar(const QString &roomid, const QPixmap &img); void highlightSelectedRoom(const RoomInfo &info); + void updateUnreadMessageCount(const QString &roomid, int count); private: Ui::RoomList *ui; diff --git a/include/ui/Badge.h b/include/ui/Badge.h index 774b03ad..d84dd7ef 100644 --- a/include/ui/Badge.h +++ b/include/ui/Badge.h @@ -30,6 +30,7 @@ public: void setRelativeXPosition(qreal x); void setRelativeYPosition(qreal y); void setText(const QString &text); + void setDiameter(int diameter); QIcon icon() const; QString text() const; @@ -40,9 +41,10 @@ public: qreal relativeXPosition() const; qreal relativeYPosition() const; + int diameter() const; + protected: void paintEvent(QPaintEvent *event) override; - int getDiameter() const; private: void init(); @@ -55,6 +57,7 @@ private: QString text_; int padding_; + int diameter_; qreal x_; qreal y_; -- cgit 1.5.1