From 222ed61c8aa646dad2b0ef9ebb45fb91172dc14d Mon Sep 17 00:00:00 2001 From: Pierre HUBERT Date: Tue, 15 Jan 2019 10:18:08 +0100 Subject: [PATCH] Automatically refresh conversations list --- src/config.h | 7 +++++++ src/widgets/conversationslistwidget.cpp | 18 +++++++++++++++++- src/widgets/conversationslistwidget.h | 23 ++++++++++++++++++----- 3 files changed, 42 insertions(+), 6 deletions(-) diff --git a/src/config.h b/src/config.h index 39cebce..c905434 100644 --- a/src/config.h +++ b/src/config.h @@ -23,12 +23,19 @@ #define API_SERVICE_TOKEN "cWHlmMS5A1" +/** + * Conversations list information + */ +#define CONVERSATION_LIST_REFRESH_INTERVAL 10 + + /** * Settings information */ #define SETTINGS_ACCOUNT_LOGIN_TOKEN_1 "account_login_token_1" #define SETTINGS_ACCOUNT_LOGIN_TOKEN_2 "account_login_token_2" + /** * Conversations information */ diff --git a/src/widgets/conversationslistwidget.cpp b/src/widgets/conversationslistwidget.cpp index f863fa5..6cf2a73 100644 --- a/src/widgets/conversationslistwidget.cpp +++ b/src/widgets/conversationslistwidget.cpp @@ -1,5 +1,6 @@ #include #include +#include #include "conversationslistwidget.h" #include "conversationitemwidget.h" @@ -7,6 +8,7 @@ #include "../helpers/usershelper.h" #include "../data/conversationslist.h" #include "../utils/uiutils.h" +#include "../config.h" ConversationsListWidget::ConversationsListWidget(QWidget *parent) : QWidget(parent) @@ -21,6 +23,12 @@ ConversationsListWidget::ConversationsListWidget(QWidget *parent) : //Set conversations list layout new QVBoxLayout(this); + + //Automatically refresh at a regular interval the list of conversations + mTimer = new QTimer(); + mTimer->setInterval(CONVERSATION_LIST_REFRESH_INTERVAL*1000); + connect(mTimer, &QTimer::timeout, this, &ConversationsListWidget::refresh); + mTimer->start(); } ConversationsListWidget::~ConversationsListWidget() @@ -69,6 +77,9 @@ void ConversationsListWidget::onGotUsersInfo(bool success, const UsersList &user connect(item, &ConversationItemWidget::openConversation, this, &ConversationsListWidget::onRequestOpenConversation); layout()->addWidget(item); } + + //Make sure selected conversation is highlighted + refreshSelectedConversation(); } void ConversationsListWidget::onRequestOpenConversation() @@ -86,9 +97,14 @@ void ConversationsListWidget::setCurrentConversation(const Conversation ¤t { mCurrentConversation = currentConversation; + refreshSelectedConversation(); +} + +void ConversationsListWidget::refreshSelectedConversation() +{ //Update UI for(int i = 0; i < layout()->count(); i++){ ConversationItemWidget *widget = qobject_cast(layout()->itemAt(i)->widget()); - widget->setActive(widget->currentConversation().iD() == currentConversation.iD()); + widget->setActive(widget->currentConversation().iD() == mCurrentConversation.iD()); } } diff --git a/src/widgets/conversationslistwidget.h b/src/widgets/conversationslistwidget.h index a7fa2ae..89ef6d4 100644 --- a/src/widgets/conversationslistwidget.h +++ b/src/widgets/conversationslistwidget.h @@ -7,6 +7,8 @@ #include "../data/userslist.h" #include "../data/user.h" +class QTimer; + class ConversationsListHelper; class UsersHelper; @@ -18,11 +20,6 @@ public: explicit ConversationsListWidget(QWidget *parent = nullptr); ~ConversationsListWidget(); - /** - * Refresh the list of conversations of the user - */ - void refresh(); - /** * This method is used to update the currently active conversation * @@ -30,6 +27,19 @@ public: */ void setCurrentConversation(const Conversation ¤tConversation); + /** + * Update the UI to select the currently active conversation + */ + void refreshSelectedConversation(); + +public slots: + + /** + * Refresh the list of conversations of the user + */ + void refresh(); + + signals: /** @@ -72,6 +82,9 @@ private: //Current opened conversation Conversation mCurrentConversation; + + //Refresh timer + QTimer *mTimer; }; #endif // CONVERSATIONSLISTWIDGET_H