9 #include <QtCore/QObject>
13 class RoomMemberEvent;
31 Q_PROPERTY(
bool isEmpty READ isEmpty CONSTANT)
32 Q_PROPERTY(QString id READ id CONSTANT)
33 Q_PROPERTY(Uri uri READ uri CONSTANT)
34 Q_PROPERTY(
bool isLocalMember READ isLocalMember CONSTANT)
35 Q_PROPERTY(QString displayName READ displayName CONSTANT)
36 Q_PROPERTY(QString htmlSafeDisplayName READ htmlSafeDisplayName CONSTANT)
37 Q_PROPERTY(QString fullName READ fullName CONSTANT)
38 Q_PROPERTY(QString htmlSafeFullName READ htmlSafeFullName CONSTANT)
39 Q_PROPERTY(QString disambiguatedName READ disambiguatedName CONSTANT)
40 Q_PROPERTY(QString htmlSafeDisambiguatedName READ htmlSafeDisambiguatedName CONSTANT)
41 Q_PROPERTY(
int hue READ hue CONSTANT)
42 Q_PROPERTY(qreal hueF READ hueF CONSTANT)
43 Q_PROPERTY(QColor color READ color CONSTANT)
44 Q_PROPERTY(QUrl avatarUrl READ avatarUrl CONSTANT)
47 RoomMember() =
default;
49 explicit RoomMember(
const Room* room,
const RoomMemberEvent* member);
51 bool isEmpty()
const {
return _member ==
nullptr; }
53 bool operator==(
const RoomMember& other)
const;
69 bool isLocalMember()
const;
72 Membership membershipState()
const;
95 QString displayName()
const;
106 QString htmlSafeDisplayName()
const;
119 QString fullName()
const;
132 QString htmlSafeFullName()
const;
145 QString disambiguatedName()
const;
158 QString htmlSafeDisambiguatedName()
const;
164 Q_INVOKABLE
bool matches(QStringView substr, Qt::CaseSensitivity cs = Qt::CaseSensitive)
const;
186 QColor color()
const;
191 QString avatarMediaId()
const;
196 QUrl avatarUrl()
const;
199 const Room* _room =
nullptr;
200 const RoomMemberEvent* _member =
nullptr;
208 inline auto memberMatcher(
auto substr, Qt::CaseSensitivity cs = Qt::CaseSensitive)
210 #ifdef __cpp_lib_bind_back
211 return std::bind_back(&RoomMember::matches, substr, cs);
213 return [substr, cs](
const RoomMember& m) {
return m.matches(substr, cs); };
218 bool operator()(
const RoomMember& u1,
const RoomMember& u2)
const
220 return operator()(u1.displayName(), u2.displayName());
222 bool operator()(
const RoomMember& u1, QStringView u2name)
const
224 return operator()(u1.displayName(), u2name);
226 bool operator()(QStringView u1name,
const RoomMember& u2)
const
228 return operator()(u1name, u2.displayName());
230 bool operator()(QStringView u1name, QStringView u2name)
const;
232 #if Quotient_VERSION_MAJOR == 0
&& Quotient_VERSION_MINOR < 10
233 template <
template <
class>
class ContT>
234 [[deprecated(
"Use Quotient::lowerBoundIndex() or std::ranges::lower_bound() instead")]]
235 typename ContT<RoomMember>::size_type
236 lowerBoundIndex(
const ContT<RoomMember>& c,
const auto& v)
const
238 return std::ranges::lower_bound(c, v, *
this) - c.begin();