diff options
Diffstat (limited to 'Swiften/Elements')
-rw-r--r-- | Swiften/Elements/Presence.h | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/Swiften/Elements/Presence.h b/Swiften/Elements/Presence.h index a1f15fa..f748e44 100644 --- a/Swiften/Elements/Presence.h +++ b/Swiften/Elements/Presence.h @@ -7,52 +7,56 @@ namespace Swift { class Presence : public Stanza { public: enum Type { Available, Error, Probe, Subscribe, Subscribed, Unavailable, Unsubscribe, Unsubscribed }; Presence() : type_(Available) /*, showType_(Online)*/ {} Presence(const String& status) : type_(Available) { setStatus(status); } Type getType() const { return type_; } void setType(Type type) { type_ = type; } StatusShow::Type getShow() const { boost::shared_ptr<StatusShow> show(getPayload<StatusShow>()); if (show) { return show->getType(); } return type_ == Available ? StatusShow::Online : StatusShow::None; } void setShow(const StatusShow::Type &show) { updatePayload(boost::shared_ptr<StatusShow>(new StatusShow(show))); } String getStatus() const { boost::shared_ptr<Status> status(getPayload<Status>()); if (status) { return status->getText(); } return ""; } void setStatus(const String& status) { updatePayload(boost::shared_ptr<Status>(new Status(status))); } int getPriority() const { boost::shared_ptr<Priority> priority(getPayload<Priority>()); return (priority ? priority->getPriority() : 0); } void setPriority(int priority) { updatePayload(boost::shared_ptr<Priority>(new Priority(priority))); } + boost::shared_ptr<Presence> clone() const { + return boost::shared_ptr<Presence>(new Presence(*this)); + } + private: Presence::Type type_; }; } |