8 #include "events/callevents.h"
9 #include "events/filesourceinfo.h"
10 #include "events/stateevent.h"
17 namespace EventStatus {
42 explicit EventItemBase(RoomEventPtr&& e) : evt(std::move(e))
47 const RoomEvent* event()
const {
return std::to_address(evt); }
48 const RoomEvent* get()
const {
return event(); }
49 template <EventClass<RoomEvent> EventT>
50 const EventT* viewAs()
const
52 return eventCast<
const EventT>(evt);
54 const RoomEventPtr& operator->()
const {
return evt; }
55 const RoomEvent& operator*()
const {
return *evt; }
58 RoomEventPtr replaceEvent(RoomEventPtr&& other)
60 return std::exchange(evt, std::move(other));
64 void setUserData(std::any userData) { data = std::move(userData); }
66 const std::any& userdata()
const {
return data; }
67 std::any& userData() {
return data; }
70 template <EventClass<RoomEvent> EventT>
73 return eventCast<EventT>(evt);
87 TimelineItem(RoomEventPtr&& e, index_t number)
88 : EventItemBase(std::move(e)), idx(number)
91 index_t index()
const {
return idx; }
99 using EventItemBase::EventItemBase;
101 EventStatus::Code deliveryStatus()
const {
return _status; }
102 QDateTime lastUpdated()
const {
return _lastUpdated; }
103 QString annotation()
const {
return _annotation; }
105 void setDeparted() { setStatus(EventStatus::Departed); }
106 void setFileUploaded(
const FileSourceInfo &uploadedFileData);
107 void setReachedServer(
const QString& eventId)
109 setStatus(EventStatus::ReachedServer);
110 (*
this)->addId(eventId);
112 void setSendingFailed(QString errorText)
114 setStatus(EventStatus::SendingFailed);
115 _annotation = std::move(errorText);
117 void resetStatus() { setStatus(EventStatus::Submitted); }
120 EventStatus::Code _status = EventStatus::Submitted;
121 QDateTime _lastUpdated = QDateTime::currentDateTimeUtc();
124 void setStatus(EventStatus::Code status)
127 _lastUpdated = QDateTime::currentDateTimeUtc();
132 inline QDebug& operator<<(QDebug& d,
const TimelineItem& ti)
134 QDebugStateSaver dss(d);
135 d.nospace() <<
"(" << ti.index() <<
"|" << ti->id() <<
")";