gloox 1.0.27
rosteritemdata.h
1/*
2 Copyright (c) 2004-2023 by Jakob Schröter <js@camaya.net>
3 This file is part of the gloox library. http://camaya.net/gloox
4
5 This software is distributed under a license. The full license
6 agreement can be found in the file LICENSE in this distribution.
7 This software may not be copied, modified, sold or distributed
8 other than expressed in the named license agreement.
9
10 This software is distributed without any warranty.
11*/
12
13
14#ifndef ROSTERITEMBASE_H__
15#define ROSTERITEMBASE_H__
16
17#include "gloox.h"
18#include "jid.h"
19#include "tag.h"
20
21#include <string>
22#include <list>
23
24
25namespace gloox
26{
27
36 class GLOOX_API RosterItemData
37 {
38
39 public:
46 RosterItemData( const JID& jid, const std::string& name,
47 const StringList& groups )
48 : m_jid( jid.full() ), m_jidJID( jid ), m_name( name ), m_groups( groups ),
49 m_subscription( S10nNone ), m_changed( false ), m_remove( false )
50 {}
51
56 RosterItemData( const JID& jid )
57 : m_jid( jid.full() ), m_jidJID( jid ), m_subscription( S10nNone ), m_changed( false ),
58 m_remove( true )
59 {}
60
66 : m_jid( right.m_jid ), m_jidJID( right.m_jidJID ), m_name( right.m_name ),
67 m_groups( right.m_groups ), m_subscription( right.m_subscription ),
68 m_changed( right.m_changed ), m_remove( right.m_remove )
69 {}
70
78 GLOOX_DEPRECATED_CTOR RosterItemData( const std::string& jid, const std::string& name,
79 const StringList& groups )
80 : m_jid( jid ), m_jidJID( jid), m_name( name ), m_groups( groups ),
81 m_subscription( S10nNone ), m_changed( false ), m_remove( false )
82 {}
83
89 GLOOX_DEPRECATED_CTOR RosterItemData( const std::string& jid )
90 : m_jid( jid ), m_jidJID( jid), m_subscription( S10nNone ), m_changed( false ),
91 m_remove( true )
92 {}
93
97 virtual ~RosterItemData() {}
98
104 GLOOX_DEPRECATED const std::string& jid() const { return m_jid; }
105
111 const JID& jidJID() const { return m_jidJID; }
112
117 void setName( const std::string& name )
118 {
119 m_name = name;
120 m_changed = true;
121 }
122
127 const std::string& name() const { return m_name; }
128
134 void setSubscription( const std::string& subscription, const std::string& ask )
135 {
136 m_sub = subscription.empty() ? "none" : subscription;
137 m_ask = ask;
138
139 if( m_sub == "from" && ask.empty() )
140 m_subscription = S10nFrom;
141 else if( m_sub == "from" && !ask.empty() )
142 m_subscription = S10nFromOut;
143 else if( m_sub == "to" && ask.empty() )
144 m_subscription = S10nTo;
145 else if( m_sub == "to" && !ask.empty() )
146 m_subscription = S10nToIn;
147 else if( m_sub == "none" && ask.empty() )
148 m_subscription = S10nNone;
149 else if( m_sub == "none" && !ask.empty() )
150 m_subscription = S10nNoneOut;
151 else if( m_sub == "both" )
152 m_subscription = S10nBoth;
153 }
154
159 SubscriptionType subscription() const { return m_subscription; }
160
165 void setGroups( const StringList& groups )
166 {
167 m_groups = groups;
168 m_changed = true;
169 }
170
175 const StringList& groups() const { return m_groups; }
176
181 bool changed() const { return m_changed; }
182
188 bool remove() const { return m_remove; }
189
193 void setSynchronized() { m_changed = false; }
194
199 Tag* tag() const
200 {
201 Tag* i = new Tag( "item" );
202 i->addAttribute( "jid", m_jidJID.full() );
203 if( m_remove )
204 i->addAttribute( "subscription", "remove" );
205 else
206 {
207 i->addAttribute( "name", m_name );
208 StringList::const_iterator it = m_groups.begin();
209 for( ; it != m_groups.end(); ++it )
210 new Tag( i, "group", (*it) );
211 i->addAttribute( "subscription", m_sub );
212 i->addAttribute( "ask", m_ask );
213 }
214 return i;
215 }
216
217 protected:
218 GLOOX_DEPRECATED std::string m_jid;
220 std::string m_name;
221 StringList m_groups;
222 SubscriptionType m_subscription;
223 std::string m_sub;
224 std::string m_ask;
225 bool m_changed;
226 bool m_remove;
227
228 };
229
230}
231
232#endif // ROSTERITEMBASE_H__
An abstraction of a JID.
Definition: jid.h:31
A class holding roster item data.
RosterItemData(const JID &jid)
GLOOX_DEPRECATED std::string m_jid
RosterItemData(const JID &jid, const std::string &name, const StringList &groups)
void setGroups(const StringList &groups)
const std::string & name() const
SubscriptionType subscription() const
GLOOX_DEPRECATED const std::string & jid() const
RosterItemData(const RosterItemData &right)
void setSubscription(const std::string &subscription, const std::string &ask)
const JID & jidJID() const
void setName(const std::string &name)
GLOOX_DEPRECATED_CTOR RosterItemData(const std::string &jid, const std::string &name, const StringList &groups)
GLOOX_DEPRECATED_CTOR RosterItemData(const std::string &jid)
const StringList & groups() const
This is an abstraction of an XML element.
Definition: tag.h:47
bool addAttribute(Attribute *attr)
Definition: tag.cpp:354
The namespace for the gloox library.
Definition: adhoc.cpp:28
std::list< std::string > StringList
Definition: gloox.h:1251
SubscriptionType
Definition: gloox.h:1224
@ S10nFromOut
Definition: gloox.h:1243
@ S10nNone
Definition: gloox.h:1225
@ S10nToIn
Definition: gloox.h:1240
@ S10nFrom
Definition: gloox.h:1242
@ S10nBoth
Definition: gloox.h:1245
@ S10nNoneOut
Definition: gloox.h:1227
@ S10nTo
Definition: gloox.h:1239