diff options
author | Konstantinos Sideris <sideris.konstantin@gmail.com> | 2017-11-30 12:55:30 +0200 |
---|---|---|
committer | Konstantinos Sideris <sideris.konstantin@gmail.com> | 2017-11-30 12:55:30 +0200 |
commit | deb1a6e2925acb4ab339fc071e5ea58ab96b5bb4 (patch) | |
tree | 781f5b742d2b2f0749092bef9d23b1fe5420c269 /include | |
parent | fdb76bb5c1bdce765479442a70ddca80b867caa6 (diff) |
Simplify timeline item creation
Diffstat (limited to 'include')
-rw-r--r-- | include/TimelineView.h | 36 |
1 files changed, 26 insertions, 10 deletions
diff --git a/include/TimelineView.h b/include/TimelineView.h index 715d8a9a..5453ea5c 100644 --- a/include/TimelineView.h +++ b/include/TimelineView.h @@ -90,16 +90,14 @@ public: const QString &room_id, QWidget *parent = 0); - TimelineItem *createTimelineItem(const events::MessageEvent<msgs::Image> &e, - bool with_sender); - TimelineItem *createTimelineItem(const events::MessageEvent<msgs::Notice> &e, - bool with_sender); - TimelineItem *createTimelineItem(const events::MessageEvent<msgs::Text> &e, - bool with_sender); - TimelineItem *createTimelineItem(const events::MessageEvent<msgs::Emote> &e, - bool with_sender); - TimelineItem *createTimelineItem(const events::MessageEvent<msgs::File> &e, - bool with_sender); + // For events with custom display widgets. + template<class Event, class Widget> + TimelineItem *createTimelineItem(const Event &event, bool withSender); + + // For events without custom display widgets. + // TODO: All events should have custom widgets. + template<class Event> + TimelineItem *createTimelineItem(const Event &event, bool withSender); // Add new events at the end of the timeline. int addEvents(const Timeline &timeline); @@ -222,3 +220,21 @@ TimelineView::addUserMessage(const QString &url, const QString &filename) PendingMessage message(MsgType, txn_id, url, filename, "", view_item); handleNewUserMessage(message); } + +template<class Event> +TimelineItem * +TimelineView::createTimelineItem(const Event &event, bool withSender) +{ + TimelineItem *item = new TimelineItem(event, withSender, scroll_widget_); + return item; +} + +template<class Event, class Widget> +TimelineItem * +TimelineView::createTimelineItem(const Event &event, bool withSender) +{ + auto eventWidget = new Widget(client_, event); + auto item = new TimelineItem(eventWidget, event, withSender, scroll_widget_); + + return item; +} |