gloox  1.0.22
rosteritemdata.h
1 /*
2  Copyright (c) 2004-2017 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 
25 namespace 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;
137  m_ask = ask;
138 
139  if( subscription == "from" && ask.empty() )
140  m_subscription = S10nFrom;
141  else if( subscription == "from" && !ask.empty() )
142  m_subscription = S10nFromOut;
143  else if( subscription == "to" && ask.empty() )
144  m_subscription = S10nTo;
145  else if( subscription == "to" && !ask.empty() )
146  m_subscription = S10nToIn;
147  else if( subscription == "none" && ask.empty() )
148  m_subscription = S10nNone;
149  else if( subscription == "none" && !ask.empty() )
150  m_subscription = S10nNoneOut;
151  else if( subscription == "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__
gloox::S10nNone
@ S10nNone
Definition: gloox.h:1225
gloox::RosterItemData::setSynchronized
void setSynchronized()
Definition: rosteritemdata.h:193
gloox::RosterItemData::RosterItemData
RosterItemData(const RosterItemData &right)
Definition: rosteritemdata.h:65
gloox::RosterItemData::RosterItemData
RosterItemData(const JID &jid, const std::string &name, const StringList &groups)
Definition: rosteritemdata.h:46
gloox::RosterItemData::RosterItemData
GLOOX_DEPRECATED_CTOR RosterItemData(const std::string &jid)
Definition: rosteritemdata.h:89
gloox::RosterItemData
A class holding roster item data.
Definition: rosteritemdata.h:36
gloox::RosterItemData::jid
const GLOOX_DEPRECATED std::string & jid() const
Definition: rosteritemdata.h:104
gloox::S10nFromOut
@ S10nFromOut
Definition: gloox.h:1243
gloox::RosterItemData::setGroups
void setGroups(const StringList &groups)
Definition: rosteritemdata.h:165
gloox::RosterItemData::m_jid
GLOOX_DEPRECATED std::string m_jid
Definition: rosteritemdata.h:218
gloox::StringList
std::list< std::string > StringList
Definition: gloox.h:1251
gloox::S10nFrom
@ S10nFrom
Definition: gloox.h:1242
gloox::RosterItemData::jidJID
const JID & jidJID() const
Definition: rosteritemdata.h:111
gloox::RosterItemData::changed
bool changed() const
Definition: rosteritemdata.h:181
gloox::SubscriptionType
SubscriptionType
Definition: gloox.h:1223
gloox::JID
An abstraction of a JID.
Definition: jid.h:30
gloox::S10nBoth
@ S10nBoth
Definition: gloox.h:1245
gloox::RosterItemData::m_jidJID
JID m_jidJID
Definition: rosteritemdata.h:219
gloox::RosterItemData::setSubscription
void setSubscription(const std::string &subscription, const std::string &ask)
Definition: rosteritemdata.h:134
gloox::RosterItemData::remove
bool remove() const
Definition: rosteritemdata.h:188
gloox
The namespace for the gloox library.
Definition: adhoc.cpp:27
gloox::S10nNoneOut
@ S10nNoneOut
Definition: gloox.h:1227
gloox::Tag
This is an abstraction of an XML element.
Definition: tag.h:46
gloox::Tag::addAttribute
bool addAttribute(Attribute *attr)
Definition: tag.cpp:354
gloox::RosterItemData::tag
Tag * tag() const
Definition: rosteritemdata.h:199
gloox::RosterItemData::RosterItemData
RosterItemData(const JID &jid)
Definition: rosteritemdata.h:56
gloox::S10nToIn
@ S10nToIn
Definition: gloox.h:1240
gloox::RosterItemData::~RosterItemData
virtual ~RosterItemData()
Definition: rosteritemdata.h:97
gloox::RosterItemData::groups
const StringList & groups() const
Definition: rosteritemdata.h:175
gloox::RosterItemData::subscription
SubscriptionType subscription() const
Definition: rosteritemdata.h:159
gloox::S10nTo
@ S10nTo
Definition: gloox.h:1239
gloox::RosterItemData::name
const std::string & name() const
Definition: rosteritemdata.h:127
gloox::RosterItemData::setName
void setName(const std::string &name)
Definition: rosteritemdata.h:117
gloox::RosterItemData::RosterItemData
GLOOX_DEPRECATED_CTOR RosterItemData(const std::string &jid, const std::string &name, const StringList &groups)
Definition: rosteritemdata.h:78