summaryrefslogtreecommitdiffstats
path: root/include/timeline/TimelineItem.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/timeline/TimelineItem.h')
-rw-r--r--include/timeline/TimelineItem.h62
1 files changed, 59 insertions, 3 deletions
diff --git a/include/timeline/TimelineItem.h b/include/timeline/TimelineItem.h
index 9646405c..fe265079 100644
--- a/include/timeline/TimelineItem.h
+++ b/include/timeline/TimelineItem.h
@@ -21,20 +21,24 @@
#include <QHBoxLayout>
#include <QLabel>
#include <QPainter>
+#include <QSettings>
#include <QStyle>
#include <QStyleOption>
-#include "AvatarProvider.h"
+#include "Audio.h"
#include "Emote.h"
#include "File.h"
#include "Image.h"
-#include "MessageEvent.h"
#include "Notice.h"
-#include "RoomInfoListItem.h"
#include "Text.h"
+
+#include "AvatarProvider.h"
+#include "MessageEvent.h"
+#include "RoomInfoListItem.h"
#include "TimelineViewManager.h"
class ImageItem;
+class AudioItem;
class FileItem;
class Avatar;
@@ -65,6 +69,7 @@ public:
// m.image
TimelineItem(ImageItem *item, const QString &userid, bool withSender, QWidget *parent = 0);
TimelineItem(FileItem *item, const QString &userid, bool withSender, QWidget *parent = 0);
+ TimelineItem(AudioItem *item, const QString &userid, bool withSender, QWidget *parent = 0);
TimelineItem(ImageItem *img,
const events::MessageEvent<msgs::Image> &e,
@@ -74,6 +79,10 @@ public:
const events::MessageEvent<msgs::File> &e,
bool with_sender,
QWidget *parent);
+ TimelineItem(AudioItem *audio,
+ const events::MessageEvent<msgs::Audio> &e,
+ bool with_sender,
+ QWidget *parent);
void setUserAvatar(const QImage &pixmap);
DescInfo descriptionMessage() const { return descriptionMsg_; }
@@ -93,6 +102,12 @@ private:
const QString &msgDescription,
bool withSender);
+ template<class Event, class Widget>
+ void setupWidgetLayout(Widget *widget,
+ const Event &event,
+ const QString &msgDescription,
+ bool withSender);
+
void generateBody(const QString &body);
void generateBody(const QString &userid, const QString &body);
void generateTimestamp(const QDateTime &time);
@@ -153,3 +168,44 @@ TimelineItem::setupLocalWidgetLayout(Widget *widget,
mainLayout_->addLayout(widgetLayout);
}
+
+template<class Event, class Widget>
+void
+TimelineItem::setupWidgetLayout(Widget *widget,
+ const Event &event,
+ const QString &msgDescription,
+ bool withSender)
+{
+ init();
+
+ event_id_ = event.eventId();
+
+ auto timestamp = QDateTime::fromMSecsSinceEpoch(event.timestamp());
+ auto displayName = TimelineViewManager::displayName(event.sender());
+
+ QSettings settings;
+ descriptionMsg_ = {event.sender() == settings.value("auth/user_id") ? "You" : displayName,
+ event.sender(),
+ msgDescription,
+ descriptiveTime(QDateTime::fromMSecsSinceEpoch(event.timestamp()))};
+
+ generateTimestamp(timestamp);
+
+ auto widgetLayout = new QHBoxLayout();
+ widgetLayout->setContentsMargins(0, 5, 0, 0);
+ widgetLayout->addWidget(widget);
+ widgetLayout->addStretch(1);
+
+ if (withSender) {
+ generateBody(displayName, "");
+ setupAvatarLayout(displayName);
+
+ mainLayout_->addLayout(headerLayout_);
+
+ AvatarProvider::resolve(event.sender(), this);
+ } else {
+ setupSimpleLayout();
+ }
+
+ mainLayout_->addLayout(widgetLayout);
+}