diff --git a/src/timeline/TimelineView.cc b/src/timeline/TimelineView.cc
index e5fd7f88..af7c0f7f 100644
--- a/src/timeline/TimelineView.cc
+++ b/src/timeline/TimelineView.cc
@@ -436,13 +436,19 @@ TimelineView::sendNextPendingMessage()
PendingMessage &m = pending_msgs_.head();
switch (m.ty) {
+ case matrix::events::MessageEventType::Audio:
case matrix::events::MessageEventType::Image:
case matrix::events::MessageEventType::File:
- client_->sendRoomMessage(
- m.ty, m.txn_id, room_id_, QFileInfo(m.filename).fileName(), m.body);
+ // FIXME: Improve the API
+ client_->sendRoomMessage(m.ty,
+ m.txn_id,
+ room_id_,
+ QFileInfo(m.filename).fileName(),
+ QFileInfo(m.filename),
+ m.body);
break;
default:
- client_->sendRoomMessage(m.ty, m.txn_id, room_id_, m.body);
+ client_->sendRoomMessage(m.ty, m.txn_id, room_id_, m.body, QFileInfo());
break;
}
}
diff --git a/src/timeline/TimelineViewManager.cc b/src/timeline/TimelineViewManager.cc
index 39f07639..281cafcd 100644
--- a/src/timeline/TimelineViewManager.cc
+++ b/src/timeline/TimelineViewManager.cc
@@ -27,6 +27,7 @@
#include "timeline/TimelineView.h"
#include "timeline/TimelineViewManager.h"
+#include "timeline/widgets/AudioItem.h"
#include "timeline/widgets/FileItem.h"
#include "timeline/widgets/ImageItem.h"
@@ -114,6 +115,21 @@ TimelineViewManager::queueFileMessage(const QString &roomid,
}
void
+TimelineViewManager::queueAudioMessage(const QString &roomid,
+ const QString &filename,
+ const QString &url)
+{
+ if (!views_.contains(roomid)) {
+ qDebug() << "Cannot send m.audio message to a non-managed view";
+ return;
+ }
+
+ auto view = views_[roomid];
+
+ view->addUserMessage<AudioItem, matrix::events::MessageEventType::Audio>(url, filename);
+}
+
+void
TimelineViewManager::clearAll()
{
for (auto view : views_)
diff --git a/src/timeline/widgets/AudioItem.cc b/src/timeline/widgets/AudioItem.cc
index 7c4b2d48..2a417b3e 100644
--- a/src/timeline/widgets/AudioItem.cc
+++ b/src/timeline/widgets/AudioItem.cc
@@ -107,6 +107,9 @@ AudioItem::AudioItem(QSharedPointer<MatrixClient> client,
QString
AudioItem::calculateFileSize(int nbytes) const
{
+ if (nbytes == 0)
+ return QString("");
+
if (nbytes < 1024)
return QString("%1 B").arg(nbytes);
diff --git a/src/timeline/widgets/FileItem.cc b/src/timeline/widgets/FileItem.cc
index e70be9da..e4cc02b2 100644
--- a/src/timeline/widgets/FileItem.cc
+++ b/src/timeline/widgets/FileItem.cc
@@ -94,6 +94,9 @@ FileItem::FileItem(QSharedPointer<MatrixClient> client,
QString
FileItem::calculateFileSize(int nbytes) const
{
+ if (nbytes == 0)
+ return QString("");
+
if (nbytes < 1024)
return QString("%1 B").arg(nbytes);
|