diff options
author | George Kiagiadakis <george.kiagiadakis@collabora.com> | 2012-04-13 13:35:29 +0300 |
---|---|---|
committer | George Kiagiadakis <george.kiagiadakis@collabora.com> | 2012-04-13 13:35:46 +0300 |
commit | c92ab27fd5d03dade4c3feda0d3d107c224ca278 (patch) | |
tree | 09377fcad26d7d438adedc143080a240f9866151 | |
parent | d3e13a20bad5c272cb1b6b2cb4f047ee6c3ad228 (diff) |
PresenceSpec: Add high-level API for easily creating PresenceSpec objects
The default flags are based on telepathy-gabble's PresenceSpec flags.
-rw-r--r-- | TelepathyQt/presence.cpp | 108 | ||||
-rw-r--r-- | TelepathyQt/presence.h | 23 |
2 files changed, 131 insertions, 0 deletions
diff --git a/TelepathyQt/presence.cpp b/TelepathyQt/presence.cpp index 3cb8756b..52b4fdd7 100644 --- a/TelepathyQt/presence.cpp +++ b/TelepathyQt/presence.cpp @@ -253,6 +253,114 @@ PresenceSpec::~PresenceSpec() { } +PresenceSpec PresenceSpec::available(PresenceSpec::SimpleStatusFlags flags) +{ + SimpleStatusSpec spec; + spec.type = ConnectionPresenceTypeAvailable; + spec.maySetOnSelf = flags & MaySetOnSelf; + spec.canHaveMessage = flags & CanHaveStatusMessage; + return PresenceSpec(QLatin1String("available"), spec); +} + +PresenceSpec PresenceSpec::chat(PresenceSpec::SimpleStatusFlags flags) +{ + SimpleStatusSpec spec; + spec.type = ConnectionPresenceTypeAvailable; + spec.maySetOnSelf = flags & MaySetOnSelf; + spec.canHaveMessage = flags & CanHaveStatusMessage; + return PresenceSpec(QLatin1String("chat"), spec); +} + +PresenceSpec PresenceSpec::pstn(PresenceSpec::SimpleStatusFlags flags) +{ + SimpleStatusSpec spec; + spec.type = ConnectionPresenceTypeAvailable; + spec.maySetOnSelf = flags & MaySetOnSelf; + spec.canHaveMessage = flags & CanHaveStatusMessage; + return PresenceSpec(QLatin1String("pstn"), spec); +} + +PresenceSpec PresenceSpec::away(PresenceSpec::SimpleStatusFlags flags) +{ + SimpleStatusSpec spec; + spec.type = ConnectionPresenceTypeAway; + spec.maySetOnSelf = flags & MaySetOnSelf; + spec.canHaveMessage = flags & CanHaveStatusMessage; + return PresenceSpec(QLatin1String("away"), spec); +} + +PresenceSpec PresenceSpec::brb(PresenceSpec::SimpleStatusFlags flags) +{ + SimpleStatusSpec spec; + spec.type = ConnectionPresenceTypeAway; + spec.maySetOnSelf = flags & MaySetOnSelf; + spec.canHaveMessage = flags & CanHaveStatusMessage; + return PresenceSpec(QLatin1String("brb"), spec); +} + +PresenceSpec PresenceSpec::busy(PresenceSpec::SimpleStatusFlags flags) +{ + SimpleStatusSpec spec; + spec.type = ConnectionPresenceTypeBusy; + spec.maySetOnSelf = flags & MaySetOnSelf; + spec.canHaveMessage = flags & CanHaveStatusMessage; + return PresenceSpec(QLatin1String("busy"), spec); +} + +PresenceSpec PresenceSpec::dnd(PresenceSpec::SimpleStatusFlags flags) +{ + SimpleStatusSpec spec; + spec.type = ConnectionPresenceTypeBusy; + spec.maySetOnSelf = flags & MaySetOnSelf; + spec.canHaveMessage = flags & CanHaveStatusMessage; + return PresenceSpec(QLatin1String("dnd"), spec); +} + +PresenceSpec PresenceSpec::xa(PresenceSpec::SimpleStatusFlags flags) +{ + SimpleStatusSpec spec; + spec.type = ConnectionPresenceTypeExtendedAway; + spec.maySetOnSelf = flags & MaySetOnSelf; + spec.canHaveMessage = flags & CanHaveStatusMessage; + return PresenceSpec(QLatin1String("xa"), spec); +} + +PresenceSpec PresenceSpec::hidden(PresenceSpec::SimpleStatusFlags flags) +{ + SimpleStatusSpec spec; + spec.type = ConnectionPresenceTypeHidden; + spec.maySetOnSelf = flags & MaySetOnSelf; + spec.canHaveMessage = flags & CanHaveStatusMessage; + return PresenceSpec(QLatin1String("hidden"), spec); +} + +PresenceSpec PresenceSpec::offline(PresenceSpec::SimpleStatusFlags flags) +{ + SimpleStatusSpec spec; + spec.type = ConnectionPresenceTypeOffline; + spec.maySetOnSelf = flags & MaySetOnSelf; + spec.canHaveMessage = flags & CanHaveStatusMessage; + return PresenceSpec(QLatin1String("offline"), spec); +} + +PresenceSpec PresenceSpec::unknown(PresenceSpec::SimpleStatusFlags flags) +{ + SimpleStatusSpec spec; + spec.type = ConnectionPresenceTypeUnknown; + spec.maySetOnSelf = flags & MaySetOnSelf; + spec.canHaveMessage = flags & CanHaveStatusMessage; + return PresenceSpec(QLatin1String("unknown"), spec); +} + +PresenceSpec PresenceSpec::error(PresenceSpec::SimpleStatusFlags flags) +{ + SimpleStatusSpec spec; + spec.type = ConnectionPresenceTypeError; + spec.maySetOnSelf = flags & MaySetOnSelf; + spec.canHaveMessage = flags & CanHaveStatusMessage; + return PresenceSpec(QLatin1String("error"), spec); +} + PresenceSpec &PresenceSpec::operator=(const PresenceSpec &other) { this->mPriv = other.mPriv; diff --git a/TelepathyQt/presence.h b/TelepathyQt/presence.h index 5b07365f..5f229f3c 100644 --- a/TelepathyQt/presence.h +++ b/TelepathyQt/presence.h @@ -75,11 +75,32 @@ private: class TP_QT_EXPORT PresenceSpec { public: + enum SimpleStatusFlag { + NoFlags = 0, + MaySetOnSelf = 0x1, + CanHaveStatusMessage = 0x2, + AllFlags = MaySetOnSelf | CanHaveStatusMessage + }; + Q_DECLARE_FLAGS(SimpleStatusFlags, SimpleStatusFlag); + PresenceSpec(); PresenceSpec(const QString &status, const SimpleStatusSpec &spec); PresenceSpec(const PresenceSpec &other); ~PresenceSpec(); + static PresenceSpec available(SimpleStatusFlags flags = AllFlags); + static PresenceSpec chat(SimpleStatusFlags flags = AllFlags); + static PresenceSpec pstn(SimpleStatusFlags flags = CanHaveStatusMessage); + static PresenceSpec away(SimpleStatusFlags flags = AllFlags); + static PresenceSpec brb(SimpleStatusFlags flags = AllFlags); + static PresenceSpec dnd(SimpleStatusFlags flags = AllFlags); + static PresenceSpec busy(SimpleStatusFlags flags = AllFlags); + static PresenceSpec xa(SimpleStatusFlags flags = AllFlags); + static PresenceSpec hidden(SimpleStatusFlags flags = AllFlags); + static PresenceSpec offline(SimpleStatusFlags flags = CanHaveStatusMessage); + static PresenceSpec unknown(SimpleStatusFlags flags = CanHaveStatusMessage); + static PresenceSpec error(SimpleStatusFlags flags = CanHaveStatusMessage); + bool isValid() const { return mPriv.constData() != 0; } PresenceSpec &operator=(const PresenceSpec &other); @@ -137,6 +158,8 @@ public: } }; +Q_DECLARE_OPERATORS_FOR_FLAGS(PresenceSpec::SimpleStatusFlags) + } // Tp Q_DECLARE_METATYPE(Tp::Presence); |