summary refs log tree commit diff
path: root/src/timeline2/TimelineModel.cpp
diff options
context:
space:
mode:
authorNicolas Werner <nicolas.werner@hotmail.de>2019-09-29 10:45:35 +0200
committerNicolas Werner <nicolas.werner@hotmail.de>2019-11-23 20:06:14 +0100
commite2d733a01a1c936d22ec6c67b2f3b57ac0afdabb (patch)
tree75964b03556235d25e25d90b25a7c1bedad402c0 /src/timeline2/TimelineModel.cpp
parentReenable ImageOverlay (diff)
downloadnheko-e2d733a01a1c936d22ec6c67b2f3b57ac0afdabb.tar.xz
Restore saving of media
Diffstat (limited to 'src/timeline2/TimelineModel.cpp')
-rw-r--r--src/timeline2/TimelineModel.cpp55
1 files changed, 55 insertions, 0 deletions
diff --git a/src/timeline2/TimelineModel.cpp b/src/timeline2/TimelineModel.cpp

index 36b768ba..b702686e 100644 --- a/src/timeline2/TimelineModel.cpp +++ b/src/timeline2/TimelineModel.cpp
@@ -105,6 +105,53 @@ eventUrl(const mtx::events::RoomEvent<T> &e) } template<class T> +QString +eventFilename(const T &) +{ + return ""; +} +QString +eventFilename(const mtx::events::RoomEvent<mtx::events::msg::Audio> &e) +{ + // body may be the original filename + return QString::fromStdString(e.content.body); +} +QString +eventFilename(const mtx::events::RoomEvent<mtx::events::msg::Video> &e) +{ + // body may be the original filename + return QString::fromStdString(e.content.body); +} +QString +eventFilename(const mtx::events::RoomEvent<mtx::events::msg::Image> &e) +{ + // body may be the original filename + return QString::fromStdString(e.content.body); +} +QString +eventFilename(const mtx::events::RoomEvent<mtx::events::msg::File> &e) +{ + // body may be the original filename + if (!e.content.filename.empty()) + return QString::fromStdString(e.content.filename); + return QString::fromStdString(e.content.body); +} + +template<class T> +QString +eventMimeType(const T &) +{ + return QString(); +} +template<class T> +auto +eventMimeType(const mtx::events::RoomEvent<T> &e) + -> std::enable_if_t<std::is_same<decltype(e.content.info.mimetype), std::string>::value, QString> +{ + return QString::fromStdString(e.content.info.mimetype); +} + +template<class T> qml_mtx_events::EventType toRoomEventType(const mtx::events::Event<T> &e) { @@ -288,6 +335,8 @@ TimelineModel::roleNames() const {UserName, "userName"}, {Timestamp, "timestamp"}, {Url, "url"}, + {Filename, "filename"}, + {MimeType, "mimetype"}, {Height, "height"}, {Width, "width"}, {ProportionalHeight, "proportionalHeight"}, @@ -366,6 +415,12 @@ TimelineModel::data(const QModelIndex &index, int role) const case Url: return QVariant(boost::apply_visitor( [](const auto &e) -> QString { return eventUrl(e); }, event)); + case Filename: + return QVariant(boost::apply_visitor( + [](const auto &e) -> QString { return eventFilename(e); }, event)); + case MimeType: + return QVariant(boost::apply_visitor( + [](const auto &e) -> QString { return eventMimeType(e); }, event)); case Height: return QVariant(boost::apply_visitor( [](const auto &e) -> qulonglong { return eventHeight(e); }, event));