diff --git a/include/timeline/TimelineView.h b/include/timeline/TimelineView.h
index 6e1287c8..782f3afd 100644
--- a/include/timeline/TimelineView.h
+++ b/include/timeline/TimelineView.h
@@ -44,6 +44,8 @@ struct PendingMessage
int txn_id;
QString body;
QString filename;
+ QString mime;
+ int64_t media_size;
QString event_id;
TimelineItem *widget;
@@ -51,12 +53,16 @@ struct PendingMessage
int txn_id,
QString body,
QString filename,
+ QString mime,
+ int64_t media_size,
QString event_id,
TimelineItem *widget)
: ty(ty)
, txn_id(txn_id)
, body(body)
, filename(filename)
+ , mime(mime)
+ , media_size(media_size)
, event_id(event_id)
, widget(widget)
{}
@@ -87,10 +93,10 @@ public:
void addUserMessage(mtx::events::MessageType ty, const QString &msg);
template<class Widget, mtx::events::MessageType MsgType>
- void addUserMessage(
- const QString &url,
- const QString &filename,
- const QSharedPointer<QIODevice> data = QSharedPointer<QIODevice>(nullptr));
+ void addUserMessage(const QString &url,
+ const QString &filename,
+ const QString &mime,
+ const int64_t size);
void updatePendingMessage(int txn_id, QString event_id);
void scrollDown();
QLabel *createDateSeparator(QDateTime datetime);
@@ -236,11 +242,13 @@ template<class Widget, mtx::events::MessageType MsgType>
void
TimelineView::addUserMessage(const QString &url,
const QString &filename,
- const QSharedPointer<QIODevice> data)
+ const QString &mime,
+ const int64_t size)
{
auto with_sender = lastSender_ != local_user_;
+ auto trimmed = QFileInfo{filename}.fileName(); // Trim file path.
- auto widget = new Widget(client_, url, data, filename, this);
+ auto widget = new Widget(client_, url, trimmed, size, this);
TimelineItem *view_item =
new TimelineItem(widget, local_user_, with_sender, scroll_widget_);
@@ -255,7 +263,7 @@ TimelineView::addUserMessage(const QString &url,
int txn_id = client_->incrementTransactionId();
- PendingMessage message(MsgType, txn_id, url, filename, "", view_item);
+ PendingMessage message(MsgType, txn_id, url, trimmed, mime, size, "", view_item);
handleNewUserMessage(message);
}
diff --git a/include/timeline/TimelineViewManager.h b/include/timeline/TimelineViewManager.h
index 74d8588c..a531be88 100644
--- a/include/timeline/TimelineViewManager.h
+++ b/include/timeline/TimelineViewManager.h
@@ -64,11 +64,25 @@ public slots:
void queueTextMessage(const QString &msg);
void queueEmoteMessage(const QString &msg);
void queueImageMessage(const QString &roomid,
- const QSharedPointer<QIODevice> data,
const QString &filename,
- const QString &url);
- void queueFileMessage(const QString &roomid, const QString &filename, const QString &url);
- void queueAudioMessage(const QString &roomid, const QString &filename, const QString &url);
+ const QString &url,
+ const QString &mime,
+ const int64_t dsize);
+ void queueFileMessage(const QString &roomid,
+ const QString &filename,
+ const QString &url,
+ const QString &mime,
+ const int64_t dsize);
+ void queueAudioMessage(const QString &roomid,
+ const QString &filename,
+ const QString &url,
+ const QString &mime,
+ const int64_t dsize);
+ void queueVideoMessage(const QString &roomid,
+ const QString &filename,
+ const QString &url,
+ const QString &mime,
+ const int64_t dsize);
private slots:
void messageSent(const QString &eventid, const QString &roomid, int txnid);
diff --git a/include/timeline/widgets/AudioItem.h b/include/timeline/widgets/AudioItem.h
index ca81f498..06f4b8ff 100644
--- a/include/timeline/widgets/AudioItem.h
+++ b/include/timeline/widgets/AudioItem.h
@@ -48,8 +48,8 @@ public:
AudioItem(QSharedPointer<MatrixClient> client,
const QString &url,
- const QSharedPointer<QIODevice> data,
const QString &filename,
+ const int64_t size,
QWidget *parent = nullptr);
QSize sizeHint() const override;
@@ -76,7 +76,6 @@ private slots:
void fileDownloaded(const QString &event_id, const QByteArray &data);
private:
- QString calculateFileSize(int nbytes) const;
void init();
enum class AudioState
diff --git a/include/timeline/widgets/FileItem.h b/include/timeline/widgets/FileItem.h
index 72589189..36d72f25 100644
--- a/include/timeline/widgets/FileItem.h
+++ b/include/timeline/widgets/FileItem.h
@@ -42,8 +42,8 @@ public:
FileItem(QSharedPointer<MatrixClient> client,
const QString &url,
- const QSharedPointer<QIODevice> data,
const QString &filename,
+ const int64_t size,
QWidget *parent = nullptr);
QSize sizeHint() const override;
@@ -64,7 +64,6 @@ private slots:
void fileDownloaded(const QString &event_id, const QByteArray &data);
private:
- QString calculateFileSize(int nbytes) const;
void openUrl();
void init();
diff --git a/include/timeline/widgets/ImageItem.h b/include/timeline/widgets/ImageItem.h
index d24b7239..9e5fa82b 100644
--- a/include/timeline/widgets/ImageItem.h
+++ b/include/timeline/widgets/ImageItem.h
@@ -36,8 +36,8 @@ public:
ImageItem(QSharedPointer<MatrixClient> client,
const QString &url,
- const QSharedPointer<QIODevice> data,
const QString &filename,
+ const int64_t size,
QWidget *parent = nullptr);
void setImage(const QPixmap &image);
diff --git a/include/timeline/widgets/VideoItem.h b/include/timeline/widgets/VideoItem.h
index 53c3e21a..65b87c95 100644
--- a/include/timeline/widgets/VideoItem.h
+++ b/include/timeline/widgets/VideoItem.h
@@ -37,13 +37,12 @@ public:
VideoItem(QSharedPointer<MatrixClient> client,
const QString &url,
- const QSharedPointer<QIODevice> data,
const QString &filename,
+ const int64_t size,
QWidget *parent = nullptr);
private:
void init();
- QString calculateFileSize(int nbytes) const;
QUrl url_;
QString text_;
|