/* * nheko Copyright (C) 2017 Konstantinos Sideris * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef HISTORY_VIEW_H #define HISTORY_VIEW_H #include #include #include #include #include #include "Sync.h" #include "TimelineItem.h" // Contains info about a message shown in the history view // but not yet confirmed by the homeserver through sync. struct PendingMessage { int txn_id; QString body; QString event_id; TimelineItem *widget; PendingMessage(int txn_id, QString body, QString event_id, TimelineItem *widget) : txn_id(txn_id) , body(body) , event_id(event_id) , widget(widget) { } }; class TimelineView : public QWidget { Q_OBJECT public: TimelineView(QSharedPointer client, QWidget *parent = 0); TimelineView(const QList &events, QSharedPointer client, QWidget *parent = 0); ~TimelineView(); // FIXME: Reduce the parameters void addHistoryItem(const Event &event, const QString &color, bool with_sender); void addImageItem(const QString &body, const QUrl &url, const Event &event, const QString &color, bool with_sender); int addEvents(const QList &events); void addUserTextMessage(const QString &msg, int txn_id); void updatePendingMessage(int txn_id, QString event_id); void clear(); public slots: void sliderRangeChanged(int min, int max); private: void init(); void removePendingMessage(const Event &event); bool isPendingMessage(const Event &event, const QString &userid); QVBoxLayout *top_layout_; QVBoxLayout *scroll_layout_; QScrollArea *scroll_area_; QWidget *scroll_widget_; QString last_sender_; QList pending_msgs_; QSharedPointer client_; }; #endif // HISTORY_VIEW_H