aboutsummaryrefslogtreecommitdiff
path: root/events/roommessageevent.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'events/roommessageevent.cpp')
-rw-r--r--events/roommessageevent.cpp63
1 files changed, 11 insertions, 52 deletions
diff --git a/events/roommessageevent.cpp b/events/roommessageevent.cpp
index 3fb0226a..f06474e9 100644
--- a/events/roommessageevent.cpp
+++ b/events/roommessageevent.cpp
@@ -23,12 +23,12 @@
#include <QtCore/QMimeDatabase>
using namespace QMatrixClient;
-using namespace MessageEventContent;
+using namespace EventContent;
using MsgType = RoomMessageEvent::MsgType;
template <typename ContentT>
-Base* make(const QJsonObject& json)
+TypedBase* make(const QJsonObject& json)
{
return new ContentT(json);
}
@@ -37,7 +37,7 @@ struct MsgTypeDesc
{
QString jsonType;
MsgType enumType;
- Base* (*maker)(const QJsonObject&);
+ TypedBase* (*maker)(const QJsonObject&);
};
const std::vector<MsgTypeDesc> msgTypes =
@@ -74,7 +74,7 @@ MsgType jsonToMsgType(const QString& jsonType)
}
RoomMessageEvent::RoomMessageEvent(const QString& plainBody,
- MsgType msgType, Base* content)
+ MsgType msgType, TypedBase* content)
: RoomMessageEvent(plainBody, msgTypeToJson(msgType), content)
{ }
@@ -112,7 +112,7 @@ RoomMessageEvent::MsgType RoomMessageEvent::msgtype() const
QMimeType RoomMessageEvent::mimeType() const
{
- return _content ? _content->mimeType :
+ return _content ? _content->type() :
QMimeDatabase().mimeTypeForName("text/plain");
}
@@ -124,22 +124,8 @@ QJsonObject RoomMessageEvent::toJson() const
return obj;
}
-QJsonObject Base::toJson() const
-{
- QJsonObject o;
- fillJson(&o);
- return o;
-}
-
-QJsonObject InfoBase::toInfoJson() const
-{
- QJsonObject info;
- fillInfoJson(&info);
- return info;
-}
-
TextContent::TextContent(const QString& text, const QString& contentType)
- : Base(QMimeDatabase().mimeTypeForName(contentType)), body(text)
+ : mimeType(QMimeDatabase().mimeTypeForName(contentType)), body(text)
{ }
TextContent::TextContent(const QJsonObject& json)
@@ -167,38 +153,6 @@ void TextContent::fillJson(QJsonObject* json) const
json->insert("formatted_body", body);
}
-FileInfo::FileInfo(const QUrl& u, int payloadSize, const QMimeType& mimeType,
- const QString& originalFilename)
- : InfoBase(mimeType), url(u), payloadSize(payloadSize)
- , originalName(originalFilename)
-{ }
-
-FileInfo::FileInfo(const QUrl& u, const QJsonObject& infoJson,
- const QString& originalFilename)
- : FileInfo(u, infoJson["size"].toInt(),
- QMimeDatabase().mimeTypeForName(infoJson["mimetype"].toString()),
- originalFilename)
-{
- if (!mimeType.isValid())
- mimeType = QMimeDatabase().mimeTypeForData(QByteArray());
-}
-
-void FileInfo::fillInfoJson(QJsonObject* infoJson) const
-{
- Q_ASSERT(infoJson);
- infoJson->insert("size", payloadSize);
- infoJson->insert("mimetype", mimeType.name());
-}
-
-void FileInfo::fillJson(QJsonObject* json) const
-{
- Q_ASSERT(json);
- json->insert("url", url.toString());
- if (!originalName.isEmpty())
- json->insert("filename", originalName);
- json->insert("info", toInfoJson());
-}
-
LocationContent::LocationContent(const QString& geoUri,
const ImageInfo<>& thumbnail)
: Thumbnailed<>(thumbnail), geoUri(geoUri)
@@ -216,6 +170,11 @@ void LocationContent::fillJson(QJsonObject* o) const
o->insert("info", Thumbnailed::toInfoJson());
}
+QMimeType LocationContent::type() const
+{
+ return QMimeDatabase().mimeTypeForData(geoUri.toLatin1());
+}
+
PlayableInfo::PlayableInfo(const QUrl& u, int fileSize,
const QMimeType& mimeType, int duration,
const QString& originalFilename)