summaryrefslogtreecommitdiffstats
blob: 622c775f0f37b318071e00e0cfa039310d779233 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
/*
 * Copyright (c) 2011 Jan Kaluza
 * Licensed under the Simplified BSD license.
 * See Documentation/Licenses/BSD-simplified.txt for more information.
 */

#pragma once

#include <vector>
#include <string>
#include <boost/shared_ptr.hpp>

#include <Swiften/Base/API.h>
#include <Swiften/Elements/Payload.h>
#include <Swiften/JID/JID.h>

namespace Swift {
	class SWIFTEN_API RosterItemExchangePayload : public Payload {
		public:
			typedef boost::shared_ptr<RosterItemExchangePayload> ref;

			class SWIFTEN_API Item {
				public:
					enum Action { Add, Modify, Delete };

					Item(Action action = Add);

					Action getAction() const {
						return action;
					}

					void setAction(Action action) {
						this->action = action;
					}

					const JID& getJID() const {
						return jid;
					}

					void setJID(const JID& jid) {
						this->jid = jid;
					}

					const std::string& getName() const {
						return name;
					}

					void setName(const std::string& name) {
						this->name = name;
					}

					const std::vector<std::string>& getGroups() const {
						return groups;
					}

					void setGroups(const std::vector<std::string> &groups) {
						this->groups = groups;
					}

					void addGroup(const std::string& group) {
						groups.push_back(group);
					}

				private:
					Action action;
					JID jid;
					std::string name;
					std::vector<std::string> groups;
			};

			typedef std::vector<RosterItemExchangePayload::Item> RosterItemExchangePayloadItems;

		public:
			RosterItemExchangePayload();

			void addItem(const RosterItemExchangePayload::Item& item) {
				items_.push_back(item);
			}

			const RosterItemExchangePayloadItems& getItems() const {
				return items_;
			}

		private:
			RosterItemExchangePayloadItems items_;
	};
}