gloox  1.0
annotations.cpp
1 /*
2  Copyright (c) 2005-2009 by Jakob Schroeter <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 
15 #include "annotations.h"
16 #include "clientbase.h"
17 
18 
19 namespace gloox
20 {
21 
23  : PrivateXML( parent ),
24  m_annotationsHandler( 0 )
25  {
26  }
27 
29  {
30  }
31 
33  {
34  Tag* s = new Tag( "storage", XMLNS, XMLNS_ANNOTATIONS );
35 
36  AnnotationsList::const_iterator it = aList.begin();
37  for( ; it != aList.end(); ++it )
38  {
39  Tag* n = new Tag( s, "note", (*it).note );
40  n->addAttribute( "jid", (*it).jid );
41  n->addAttribute( "cdate", (*it).cdate );
42  n->addAttribute( "mdate", (*it).mdate );
43  }
44 
45  storeXML( s, this );
46  }
47 
49  {
50  requestXML( "storage", XMLNS_ANNOTATIONS, this );
51  }
52 
54  {
55  if( !xml )
56  return;
57 
58  AnnotationsList aList;
59  const TagList& l = xml->children();
60  TagList::const_iterator it = l.begin();
61  for( ; it != l.end(); ++it )
62  {
63  if( (*it)->name() == "note" )
64  {
65  const std::string& jid = (*it)->findAttribute( "jid" );
66  const std::string& note = (*it)->cdata();
67 
68  if( !jid.empty() && !note.empty() )
69  {
70  const std::string& cdate = (*it)->findAttribute( "cdate" );
71  const std::string& mdate = (*it)->findAttribute( "mdate" );
73  item.jid = jid;
74  item.cdate = cdate;
75  item.mdate = mdate;
76  item.note = note;
77  aList.push_back( item );
78  }
79  }
80  }
81 
82  if( m_annotationsHandler )
83  m_annotationsHandler->handleAnnotations( aList );
84  }
85 
86  void Annotations::handlePrivateXMLResult( const std::string& /*uid*/, PrivateXMLResult /*result*/ )
87  {
88  }
89 
90 }