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<Event> &events);
+ int addEvents(const QList<Event> &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<QString, QString> 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 <QtWidgets/QWidget>
#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_;
|