summary refs log tree commit diff
path: root/include/RoomState.h
diff options
context:
space:
mode:
authorKonstantinos Sideris <sideris.konstantin@gmail.com>2017-05-26 21:34:16 +0300
committerKonstantinos Sideris <sideris.konstantin@gmail.com>2017-05-26 21:34:16 +0300
commit0cd9e3b1e56e991dd357ff4e98c4aba108c25e3f (patch)
tree7ae3eb41869da32eea14791981b18e80eeedfc68 /include/RoomState.h
parentAdd custom scrollbar on the timeline (diff)
downloadnheko-0cd9e3b1e56e991dd357ff4e98c4aba108c25e3f.tar.xz
Resolve name and avatar on 1-on-1 rooms
Diffstat (limited to 'include/RoomState.h')
-rw-r--r--include/RoomState.h40
1 files changed, 36 insertions, 4 deletions
diff --git a/include/RoomState.h b/include/RoomState.h

index 788940e2..0389a6df 100644 --- a/include/RoomState.h +++ b/include/RoomState.h
@@ -18,6 +18,7 @@ #pragma once #include <QPixmap> +#include <QUrl> #include "AliasesEventContent.h" #include "AvatarEventContent.h" @@ -25,6 +26,7 @@ #include "CreateEventContent.h" #include "HistoryVisibilityEventContent.h" #include "JoinRulesEventContent.h" +#include "MemberEventContent.h" #include "NameEventContent.h" #include "PowerLevelsEventContent.h" #include "TopicEventContent.h" @@ -38,11 +40,20 @@ namespace events = matrix::events; class RoomState { public: - QString resolveName() const; - inline QString resolveTopic() const; + // Calculate room data that are not immediatly accessible. Like room name and avatar. + // + // e.g If the room is 1-on-1 name and avatar should be extracted from a user. + void resolveName(); + void resolveAvatar(); - QPixmap avatar_img_; + inline QUrl getAvatar() const; + inline QString getName() const; + inline QString getTopic() const; + void removeLeaveMemberships(); + void update(const RoomState &state); + + // The latest state events. events::StateEvent<events::AliasesEventContent> aliases; events::StateEvent<events::AvatarEventContent> avatar; events::StateEvent<events::CanonicalAliasEventContent> canonical_alias; @@ -52,9 +63,30 @@ public: events::StateEvent<events::NameEventContent> name; events::StateEvent<events::PowerLevelsEventContent> power_levels; events::StateEvent<events::TopicEventContent> topic; + + // Contains the m.room.member events for all the joined users. + QMap<QString, events::StateEvent<events::MemberEventContent>> memberships; + +private: + QUrl avatar_; + QString name_; + + // It defines the user whose avatar is used for the room. If the room has an avatar + // event this should be empty. + QString userAvatar_; }; -inline QString RoomState::resolveTopic() const +inline QString RoomState::getTopic() const { return topic.content().topic().simplified(); } + +inline QString RoomState::getName() const +{ + return name_; +} + +inline QUrl RoomState::getAvatar() const +{ + return avatar_; +}