Initial implementation for local echo

Each HistoryView maintains a list of pending events. Each pending
message is validated from the homeserver with either the returned
EventId or the body of the message.

Currently there is no support to remove invalid messages.

Also some small refactoring:
    - ChatPage doesn't know about the message being sent. The message
      delivery is solely handled by HistoryViewManager.
    - Nick coloring function moved to HistoryViewManager.
This commit is contained in:
Konstantinos Sideris 2017-04-13 04:11:22 +03:00
parent 718562737c
commit 27f7142cd8
10 changed files with 245 additions and 49 deletions

View file

@ -19,10 +19,12 @@
#define HISTORY_VIEW_MANAGER_H
#include <QDebug>
#include <QSharedPointer>
#include <QStackedWidget>
#include <QWidget>
#include "HistoryView.h"
#include "MatrixClient.h"
#include "RoomInfo.h"
#include "Sync.h"
@ -31,7 +33,7 @@ class HistoryViewManager : public QStackedWidget
Q_OBJECT
public:
HistoryViewManager(QWidget *parent);
HistoryViewManager(QSharedPointer<MatrixClient> client, QWidget *parent);
~HistoryViewManager();
void initialize(const Rooms &rooms);
@ -39,14 +41,21 @@ public:
void clearAll();
static QString chooseRandomColor();
static QString getUserColor(const QString &userid);
static QMap<QString, QString> NICK_COLORS;
static const QList<QString> COLORS;
public slots:
void setHistoryView(const RoomInfo &info);
void sendTextMessage(const QString &msg);
private slots:
void messageSent(const QString &eventid, const QString &roomid, int txnid);
private:
RoomInfo active_room_;
QMap<QString, HistoryView *> views_;
QSharedPointer<MatrixClient> client_;
};
#endif