00001
00002
00003
00004
00005
00006
00007 #pragma once
00008
00009 #include <boost/optional.hpp>
00010 #include <boost/shared_ptr.hpp>
00011 #include <string>
00012 #include <vector>
00013
00014 #include <Swiften/JID/JID.h>
00015 #include <Swiften/Elements/Payload.h>
00016 #include <Swiften/Elements/MUCOccupant.h>
00017 #include <Swiften/Elements/MUCItem.h>
00018
00019 namespace Swift {
00020 class MUCUserPayload : public Payload {
00021 public:
00022 typedef boost::shared_ptr<MUCUserPayload> ref;
00023
00024 struct StatusCode {
00025 StatusCode() : code(0) {}
00026 StatusCode(int code) : code(code) {}
00027 int code;
00028 };
00029
00030
00031
00032
00033
00034
00035
00036
00037
00045 struct Invite {
00046 std::string reason;
00047 JID from;
00048 JID to;
00049 };
00050
00051 MUCUserPayload() {
00052 }
00053
00054 void addItem(const MUCItem& item) {items_.push_back(item);}
00055
00056 void addStatusCode(StatusCode code) {statusCodes_.push_back(code);}
00057
00058 const std::vector<MUCItem>& getItems() const {return items_;}
00059
00060 const std::vector<StatusCode>& getStatusCodes() const {return statusCodes_;}
00061
00062 boost::shared_ptr<Payload> getPayload() const {
00063 return payload_;
00064 }
00065
00066 void setPayload(boost::shared_ptr<Payload> p) {
00067 payload_ = p;
00068 }
00069
00070 const boost::optional<std::string>& getPassword() const {
00071 return password_;
00072 }
00073
00074 void setPassword(const std::string& password) {
00075 password_ = password;
00076 }
00077
00078
00079 const boost::optional<Invite>& getInvite() const {
00080 return invite_;
00081 }
00082
00083 void setInvite(const Invite& invite) {
00084 invite_ = invite;
00085 }
00086
00087
00088 private:
00089 std::vector<MUCItem> items_;
00090 std::vector<StatusCode> statusCodes_;
00091 boost::shared_ptr<Payload> payload_;
00092 boost::optional<std::string> password_;
00093 boost::optional<Invite> invite_;
00094 };
00095 }