Changeset 148
- Timestamp:
- 01/02/08 00:03:39 (9 months ago)
- Location:
- Mulberry/branches/v4.1d1/Sources_Common
- Files:
-
- 28 modified
-
Calendar_Store/Clients/CWebDAVDefinitions.cpp (modified) (6 diffs)
-
Calendar_Store/Clients/CWebDAVDefinitions.h (modified) (6 diffs)
-
HTTP/CardDAVClient/CCardDAVMakeAdbk.cpp (modified) (2 diffs)
-
HTTP/CardDAVClient/CCardDAVMakeAdbk.h (modified) (2 diffs)
-
HTTP/CardDAVClient/CCardDAVMultigetReport.cpp (modified) (2 diffs)
-
HTTP/CardDAVClient/CCardDAVQueryReport.cpp (modified) (5 diffs)
-
HTTP/CardDAVClient/CCardDAVQueryReport.h (modified) (1 diff)
-
HTTP/CardDAVClient/CCardDAVReportParser.cpp (modified) (6 diffs)
-
HTTP/CardDAVClient/CCardDAVReportParser.h (modified) (4 diffs)
-
Mail/AddressBook/CAddressBook.cp (modified) (2 diffs)
-
Mail/INET_Clients/ACAP/CACAPClient.cp (modified) (1 diff)
-
Mail/INET_Clients/ACAP/CACAPClient.h (modified) (1 diff)
-
Mail/INET_Clients/CAdbkClient.h (modified) (1 diff)
-
Mail/INET_Clients/IMSP/CIMSPClient.cp (modified) (1 diff)
-
Mail/INET_Clients/IMSP/CIMSPClient.h (modified) (1 diff)
-
Mail/Local_Clients/CLocalAdbkClient.cp (modified) (1 diff)
-
Mail/Local_Clients/CLocalAdbkClient.h (modified) (1 diff)
-
Mail/Local_Clients/CMacOSXAdbkClient.cp (modified) (1 diff)
-
Mail/Local_Clients/CMacOSXAdbkClient.h (modified) (1 diff)
-
Mail/Protocols/CAdbkProtocol.cp (modified) (3 diffs)
-
VCard_Store/CVCardMapper.cpp (modified) (4 diffs)
-
VCard_Store/CVCardMapper.h (modified) (2 diffs)
-
VCard_Store/Clients/CCardDAVVCardClient.cpp (modified) (10 diffs)
-
VCard_Store/Clients/CCardDAVVCardClient.h (modified) (1 diff)
-
VCard_Store/Clients/CLocalVCardClient.cpp (modified) (1 diff)
-
VCard_Store/Clients/CLocalVCardClient.h (modified) (1 diff)
-
VCard_Store/Clients/CWebDAVVCardClient.cpp (modified) (5 diffs)
-
VCard_Store/Clients/CWebDAVVCardClient.h (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
Mulberry/branches/v4.1d1/Sources_Common/Calendar_Store/Clients/CWebDAVDefinitions.cpp
r113 r148 44 44 const xmllib::XMLName cElement_propstat("propstat", cNamespace); 45 45 46 const xmllib::XMLName cProperty_getcontentlength("getcontentlength", cNamespace); 46 const xmllib::XMLName cElement_propertyupdate("propertyupdate", cNamespace); 47 const xmllib::XMLName cElement_set("set", cNamespace); 48 const xmllib::XMLName cElement_remove("remove", cNamespace); 49 50 const xmllib::XMLName cProperty_getcontentlength("getcontentlength", cNamespace); 47 51 const xmllib::XMLName cProperty_getcontenttype("getcontenttype", cNamespace); 48 52 const xmllib::XMLName cProperty_resourcetype("resourcetype", cNamespace); … … 88 92 const xmllib::XMLName cElement_principal_match("principal-match", cNamespace); 89 93 94 // Extended MKCOL 95 const xmllib::XMLName cElement_mkcol("mkcol", cNamespace); 96 const xmllib::XMLName cElement_mkcol_response("mkcol-response", cNamespace); 97 90 98 } 91 99 … … 102 110 103 111 const xmllib::XMLName cElement_calendardata("calendar-data", cNamespace); 104 const xmllib::XMLName cAttribute_returncontenttype("return-content-type", cNamespace);105 112 106 113 const xmllib::XMLName cElement_comp("comp", cNamespace); … … 119 126 const xmllib::XMLName cElement_paramfilter("param-filter", cNamespace); 120 127 121 const xmllib::XMLName cElement_is defined("is-defined", cNamespace);128 const xmllib::XMLName cElement_isnotdefined("is-not-defined", cNamespace); 122 129 const xmllib::XMLName cElement_textmatch("text-match", cNamespace); 123 130 const xmllib::XMLName cAttribute_caseless("caseless", cNamespace); … … 154 161 155 162 const char* cNamespace = "urn:ietf:params:xml:ns:carddav"; 156 const xmllib::XMLName cProperty_carddavadbk("adbk", cNamespace); 157 158 const xmllib::XMLName cElement_adbkquery("adbk-query", cNamespace); 159 const xmllib::XMLName cElement_adbkmultiget("adbk-multiget", cNamespace); 160 161 const xmllib::XMLName cElement_adbkdata("adbk-data", cNamespace); 162 const xmllib::XMLName cAttribute_returncontenttype("return-content-type", cNamespace); 163 const xmllib::XMLName cProperty_carddavadbk("addressbook", cNamespace); 164 165 const xmllib::XMLName cElement_adbkquery("addressbook-query", cNamespace); 166 const xmllib::XMLName cElement_adbkmultiget("addressbook-multiget", cNamespace); 167 168 const xmllib::XMLName cElement_adbkdata("address-data", cNamespace); 163 169 164 170 const xmllib::XMLName cElement_allprop("allprop", cNamespace); … … 168 174 169 175 const xmllib::XMLName cElement_filter("filter", cNamespace); 170 const xmllib::XMLName cElement_compfilter("comp-filter", cNamespace);171 176 const xmllib::XMLName cElement_propfilter("prop-filter", cNamespace); 172 177 const xmllib::XMLName cElement_paramfilter("param-filter", cNamespace); 173 178 174 const xmllib::XMLName cElement_is defined("is-defined", cNamespace);179 const xmllib::XMLName cElement_isnotdefined("is-not-defined", cNamespace); 175 180 const xmllib::XMLName cElement_textmatch("text-match", cNamespace); 176 const xmllib::XMLName cAttribute_caseless("caseless", cNamespace); 181 const xmllib::XMLName cAttribute_collation("collation", cNamespace); 182 const xmllib::XMLName cAttribute_negate_condition("negate-condition", cNamespace); 177 183 const xmllib::XMLName cAttribute_matchtype("match-type", cNamespace); 178 184 179 const xmllib::XMLName cAttributeValue_yes(" caseless_yes", cNamespace);180 const xmllib::XMLName cAttributeValue_no(" caseless_no", cNamespace);185 const xmllib::XMLName cAttributeValue_yes("yes", cNamespace); 186 const xmllib::XMLName cAttributeValue_no("no", cNamespace); 181 187 182 188 const xmllib::XMLName cAttributeValue_matchtype_starts("starts-with", cNamespace); 183 189 const xmllib::XMLName cAttributeValue_matchtype_ends("ends-with", cNamespace); 184 190 const xmllib::XMLName cAttributeValue_matchtype_contains("contains", cNamespace); 185 const xmllib::XMLName cAttributeValue_matchtype_is(" is", cNamespace);191 const xmllib::XMLName cAttributeValue_matchtype_is("equals", cNamespace); 186 192 187 193 } -
Mulberry/branches/v4.1d1/Sources_Common/Calendar_Store/Clients/CWebDAVDefinitions.h
r113 r148 46 46 extern const xmllib::XMLName cElement_propstat; 47 47 48 extern const xmllib::XMLName cElement_propertyupdate; 49 extern const xmllib::XMLName cElement_set; 50 extern const xmllib::XMLName cElement_remove; 51 48 52 extern const xmllib::XMLName cProperty_getcontentlength; 49 53 extern const xmllib::XMLName cProperty_getcontenttype; … … 94 98 extern const xmllib::XMLName cElement_principal_match; 95 99 100 // Extended MKCOL 101 extern const xmllib::XMLName cElement_mkcol; 102 extern const xmllib::XMLName cElement_mkcol_response; 103 96 104 } 97 105 … … 109 117 110 118 extern const xmllib::XMLName cElement_calendardata; 111 extern const xmllib::XMLName cAttribute_returncontenttype;112 119 113 120 extern const xmllib::XMLName cElement_comp; … … 126 133 extern const xmllib::XMLName cElement_paramfilter; 127 134 128 extern const xmllib::XMLName cElement_is defined;135 extern const xmllib::XMLName cElement_isnotdefined; 129 136 extern const xmllib::XMLName cElement_textmatch; 130 137 extern const xmllib::XMLName cAttribute_caseless; … … 167 174 168 175 extern const xmllib::XMLName cElement_adbkdata; 169 extern const xmllib::XMLName cAttribute_returncontenttype;170 176 171 177 extern const xmllib::XMLName cElement_allprop; … … 179 185 extern const xmllib::XMLName cElement_paramfilter; 180 186 181 extern const xmllib::XMLName cElement_is defined;187 extern const xmllib::XMLName cElement_isnotdefined; 182 188 extern const xmllib::XMLName cElement_textmatch; 183 extern const xmllib::XMLName cAttribute_caseless; 189 extern const xmllib::XMLName cAttribute_collation; 190 extern const xmllib::XMLName cAttribute_negate_condition; 191 extern const xmllib::XMLName cAttribute_matchtype; 184 192 185 193 extern const xmllib::XMLName cAttributeValue_yes; 186 194 extern const xmllib::XMLName cAttributeValue_no; 187 195 196 extern const xmllib::XMLName cAttributeValue_matchtype_starts; 197 extern const xmllib::XMLName cAttributeValue_matchtype_ends; 198 extern const xmllib::XMLName cAttributeValue_matchtype_contains; 199 extern const xmllib::XMLName cAttributeValue_matchtype_is; 200 188 201 } 189 202 -
Mulberry/branches/v4.1d1/Sources_Common/HTTP/CardDAVClient/CCardDAVMakeAdbk.cpp
r86 r148 24 24 #include "CCardDAVMakeAdbk.h" 25 25 26 #include "CHTTPDataString.h" 27 #include "CWebDAVDefinitions.h" 28 #include "XMLDocument.h" 29 #include "XMLNode.h" 30 31 #include <strstream> 32 33 using namespace webdav; 26 34 using namespace carddav; 27 35 28 36 CCardDAVMakeAdbk::CCardDAVMakeAdbk(CWebDAVSession* session, const cdstring& ruri) : 29 CWebDAV RequestResponse(session, eRequest_MKADBK, ruri)37 CWebDAVMakeCollection(session, ruri) 30 38 { 39 InitRequestData(); 31 40 } 32 41 … … 36 45 } 37 46 47 void CCardDAVMakeAdbk::InitRequestData() 48 { 49 // Write XML info to a string 50 std::ostrstream os; 51 GenerateXML(os); 52 os << ends; 53 54 mRequestData = new CHTTPInputDataString(os.str(), "text/xml; charset=utf-8"); 55 } 56 57 void CCardDAVMakeAdbk::GenerateXML(ostream& os) 58 { 59 using namespace xmllib; 60 61 // Structure of document is: 62 // 63 // <DAV:mkcol> 64 // <DAV:set> 65 // <DAV:prop> 66 // <DAV:resource-type> 67 // <DAV:collection/> 68 // <CARDDAV:addressbook/> 69 // </DAV:resource-type> 70 // </DAV:prop> 71 // </DAV:set> 72 // </DAV:mkcol> 73 74 // Create document and get the root 75 xmllib::XMLDocument xmldoc; 76 77 // <DAV:mkcol> element 78 xmllib::XMLNode* mkcol = xmldoc.GetRoot(); 79 xmllib::XMLNamespace dav_namespc(http::webdav::cNamespace, "D"); 80 xmllib::XMLNamespace carddav_namespc(carddav::cNamespace, "C"); 81 mkcol->SetName(http::webdav::cElement_mkcol.Name(), dav_namespc); 82 mkcol->AddNamespace(dav_namespc); 83 84 // <DAV:set> element 85 xmllib::XMLNode* set = new xmllib::XMLNode(&xmldoc, mkcol, cElement_set.Name(), dav_namespc); 86 87 // <DAV:prop> element 88 xmllib::XMLNode* prop = new xmllib::XMLNode(&xmldoc, set, cElement_prop.Name(), dav_namespc); 89 90 // <DAV:resourcetype> element 91 xmllib::XMLNode* resourcetype = new xmllib::XMLNode(&xmldoc, prop, cProperty_resourcetype.Name(), dav_namespc); 92 93 // <DAV:collection> element 94 new xmllib::XMLNode(&xmldoc, resourcetype, cProperty_collection.Name(), dav_namespc); 95 96 // <DAV:resourcetype> element 97 new xmllib::XMLNode(&xmldoc, resourcetype, cProperty_carddavadbk.Name(), carddav_namespc); 98 99 // Now we have the complete document, so write it out (no indentation) 100 xmldoc.Generate(os, false); 101 } -
Mulberry/branches/v4.1d1/Sources_Common/HTTP/CardDAVClient/CCardDAVMakeAdbk.h
r86 r148 25 25 #define CCardDAVMakeAdbk_H 26 26 27 #include "CWebDAV RequestResponse.h"27 #include "CWebDAVMakeCollection.h" 28 28 29 29 using namespace http; … … 34 34 namespace carddav { 35 35 36 class CCardDAVMakeAdbk: public CWebDAV RequestResponse36 class CCardDAVMakeAdbk: public CWebDAVMakeCollection 37 37 { 38 38 public: 39 39 CCardDAVMakeAdbk(CWebDAVSession* session, const cdstring& ruri); 40 40 virtual ~CCardDAVMakeAdbk(); 41 42 43 protected: 44 void InitRequestData(); 45 46 void GenerateXML(std::ostream& os); 41 47 42 48 }; -
Mulberry/branches/v4.1d1/Sources_Common/HTTP/CardDAVClient/CCardDAVMultigetReport.cpp
r86 r148 62 62 // Structure of document is: 63 63 // 64 // <CardDAV:ad bk-multiget>64 // <CardDAV:addressbook-multiget> 65 65 // <DAV:prop> 66 66 // <DAV:getetag> 67 // <CardDAV:address-data/> 67 68 // </DAV:prop> 68 // <CardDAV:adbk-data/>69 69 // <DAV:href>...</DAV:href> 70 70 // ... 71 // </CardDAV:ad bk-multiget>71 // </CardDAV:addressbook-multiget> 72 72 73 73 // Create document and get the root 74 74 xmllib::XMLDocument xmldoc; 75 75 76 // <CardDAV:ad bk-multiget> element76 // <CardDAV:addressbook-multiget> element 77 77 xmllib::XMLNode* multiget = xmldoc.GetRoot(); 78 78 xmllib::XMLNamespace dav_namespc(webdav::cNamespace, "D"); … … 88 88 new xmllib::XMLNode(&xmldoc, prop, cProperty_getetag.Name(), dav_namespc); 89 89 90 // <CardDAV:ad bk-data> element91 new xmllib::XMLNode(&xmldoc, multiget, cElement_adbkdata.Name(), carddav_namespc);90 // <CardDAV:address-data> element 91 new xmllib::XMLNode(&xmldoc, prop, cElement_adbkdata.Name(), carddav_namespc); 92 92 93 93 // Do for each href -
Mulberry/branches/v4.1d1/Sources_Common/HTTP/CardDAVClient/CCardDAVQueryReport.cpp
r86 r148 34 34 using namespace carddav; 35 35 36 CCardDAVQueryReport::CCardDAVQueryReport(CWebDAVSession* session, const cdstring& ruri, const cdstring& search_prop, const cdstring& search_text ) :36 CCardDAVQueryReport::CCardDAVQueryReport(CWebDAVSession* session, const cdstring& ruri, const cdstring& search_prop, const cdstring& search_text, const cdstring& match_type) : 37 37 CWebDAVReport(session, ruri) 38 38 { 39 InitRequestData(search_prop, search_text );39 InitRequestData(search_prop, search_text, match_type); 40 40 } 41 41 … … 46 46 47 47 48 void CCardDAVQueryReport::InitRequestData(const cdstring& search_prop, const cdstring& search_text )48 void CCardDAVQueryReport::InitRequestData(const cdstring& search_prop, const cdstring& search_text, const cdstring& match_type) 49 49 { 50 50 // Write XML info to a string 51 51 std::ostrstream os; 52 GenerateXML(os, search_prop, search_text );52 GenerateXML(os, search_prop, search_text, match_type); 53 53 os << ends; 54 54 … … 56 56 } 57 57 58 void CCardDAVQueryReport::GenerateXML(std::ostream& os, const cdstring& search_prop, const cdstring& search_text )58 void CCardDAVQueryReport::GenerateXML(std::ostream& os, const cdstring& search_prop, const cdstring& search_text, const cdstring& match_type) 59 59 { 60 60 using namespace xmllib; … … 65 65 // <DAV:prop> 66 66 // <DAV:getetag> 67 // <C:adbk-data/> 67 68 // </DAV:prop> 68 // <C:adbk-data/>69 69 // <C:filter> 70 // <C:comp-filter>71 70 // <C:prop-filter name="..."> 72 // <C:text-match caseless="yes">...</C:text-match>71 // <C:text-match match-type="...">...</C:text-match> 73 72 // </C:prop-filter> 74 // </C:comp-filter>75 73 // </C:filter> 76 74 // ... … … 94 92 new xmllib::XMLNode(&xmldoc, prop, cProperty_getetag.Name(), dav_namespc); 95 93 96 // <CardDAV:ad bk-data> element97 new xmllib::XMLNode(&xmldoc, query, cElement_adbkdata.Name(), carddav_namespc);94 // <CardDAV:addressbook-data> element 95 new xmllib::XMLNode(&xmldoc, prop, cElement_adbkdata.Name(), carddav_namespc); 98 96 99 97 // <CardDAV:filter> element 100 98 xmllib::XMLNode* filter = new xmllib::XMLNode(&xmldoc, query, cElement_filter.Name(), carddav_namespc); 101 99 102 // <CardDAV:comp-filter> element103 xmllib::XMLNode* comp_filter = new xmllib::XMLNode(&xmldoc, filter, cElement_compfilter.Name(), carddav_namespc);104 105 100 // <CardDAV:prop-filter name="..."> element 106 xmllib::XMLNode* prop_filter = new xmllib::XMLNode(&xmldoc, comp_filter, cElement_propfilter.Name(), carddav_namespc);101 xmllib::XMLNode* prop_filter = new xmllib::XMLNode(&xmldoc, filter, cElement_propfilter.Name(), carddav_namespc); 107 102 prop_filter->AddAttribute(cAttribute_name.Name(), search_prop); 108 103 109 // <C:text-match caseless="yes">...</C:text-match>104 // <C:text-match match-type="...">...</C:text-match> 110 105 xmllib::XMLNode* text_match = new xmllib::XMLNode(&xmldoc, prop_filter, cElement_textmatch.Name(), carddav_namespc, search_text); 111 text_match->AddAttribute(cAttribute_ caseless.Name(), cAttributeValue_yes.Name());106 text_match->AddAttribute(cAttribute_matchtype.Name(), match_type); 112 107 113 108 // Now we have the complete document, so write it out (no indentation) -
Mulberry/branches/v4.1d1/Sources_Common/HTTP/CardDAVClient/CCardDAVQueryReport.h
r86 r148 37 37 { 38 38 public: 39 CCardDAVQueryReport(CWebDAVSession* session, const cdstring& ruri, const cdstring& search_prop, const cdstring& search_text );39 CCardDAVQueryReport(CWebDAVSession* session, const cdstring& ruri, const cdstring& search_prop, const cdstring& search_text, const cdstring& match_type); 40 40 virtual ~CCardDAVQueryReport(); 41 41 42 42 protected: 43 void InitRequestData(const cdstring& search_prop, const cdstring& search_text );43 void InitRequestData(const cdstring& search_prop, const cdstring& search_text, const cdstring& match_type); 44 44 45 void GenerateXML(std::ostream& os, const cdstring& search_prop, const cdstring& search_text );45 void GenerateXML(std::ostream& os, const cdstring& search_prop, const cdstring& search_text, const cdstring& match_type); 46 46 }; 47 47 -
Mulberry/branches/v4.1d1/Sources_Common/HTTP/CardDAVClient/CCardDAVReportParser.cpp
r86 r148 40 40 using namespace xmllib; 41 41 42 CCardDAVReportParser::CCardDAVReportParser(vCard::CVCardAddressBook& vadbk) 43 { 44 mVAdbk = &vadbk; 45 mAdbk = NULL; 46 mAddrs = NULL; 47 mAddItems = false; 48 } 49 42 50 CCardDAVReportParser::CCardDAVReportParser(vCard::CVCardAddressBook& vadbk, CAddressBook* adbk, bool add) 43 51 { 44 52 mVAdbk = &vadbk; 45 53 mAdbk = adbk; 54 mAddrs = NULL; 55 mAddItems = add; 56 } 57 58 CCardDAVReportParser::CCardDAVReportParser(vCard::CVCardAddressBook& vadbk, CAddressList* addrs, bool add) 59 { 60 mVAdbk = &vadbk; 61 mAdbk = NULL; 62 mAddrs = addrs; 46 63 mAddItems = add; 47 64 } … … 71 88 else if ((*iter)->CompareFullName(cElement_propstat)) 72 89 { 73 ParsePropStat(*iter, etag); 74 } 75 76 // Is it adbk-data 77 else if ((*iter)->CompareFullName(cElement_adbkdata)) 78 { 79 ParseAdbkData(*iter, href, etag); 90 ParsePropStat(*iter, href, etag); 80 91 } 81 92 } 82 93 } 83 94 84 void CCardDAVReportParser::ParsePropStat(const xmllib::XMLNode* response, c dstring& etag)95 void CCardDAVReportParser::ParsePropStat(const xmllib::XMLNode* response, const cdstring& href, cdstring& etag) 85 96 { 86 97 // Scan the propstat node the status - we only process OK status … … 110 121 if ((*iter)->CompareFullName(webdav::cElement_prop)) 111 122 { 112 ParseProp(*iter, etag);123 ParseProp(*iter, href, etag); 113 124 } 114 125 } … … 118 129 } 119 130 120 void CCardDAVReportParser::ParseProp(const xmllib::XMLNode* response, c dstring& etag)131 void CCardDAVReportParser::ParseProp(const xmllib::XMLNode* response, const cdstring& href, cdstring& etag) 121 132 { 122 133 // Scan the prop node - each child is processed 123 134 for(XMLNodeList::const_iterator iter = response->Children().begin(); iter != response->Children().end(); iter++) 124 135 { 125 ParsePropElement(*iter, etag);136 ParsePropElement(*iter, href, etag); 126 137 } 127 138 } 128 139 129 void CCardDAVReportParser::ParsePropElement(const xmllib::XMLNode* response, c dstring& etag)140 void CCardDAVReportParser::ParsePropElement(const xmllib::XMLNode* response, const cdstring& href, cdstring& etag) 130 141 { 131 142 // Here we need to detect the type of element and dispatch accordingly … … 143 154 etag = response->Data(); 144 155 } 156 157 // Is it adbk-data 158 else if (response->CompareFullName(cElement_adbkdata)) 159 { 160 ParseAdbkData(response, href, etag); 161 } 145 162 } 146 163 … … 155 172 std::istrstream is(response->Data().c_str()); 156 173 vCard::CVCardVCard* vcard = mVAdbk->ParseComponent(is, last_path, etag); 157 if ((mAdbk != NULL) && mAddItems) 158 vcardstore::MapFromVCard(mAdbk, *vcard); 174 if ((vcard != NULL) && mAddItems) 175 { 176 if (mAdbk != NULL) 177 vcardstore::MapFromVCard(mAdbk, *vcard); 178 else if (mAddrs != NULL) 179 vcardstore::MapFromVCard(mAddrs, *vcard); 180 } 159 181 } -
Mulberry/branches/v4.1d1/Sources_Common/HTTP/CardDAVClient/CCardDAVReportParser.h
r86 r148 38 38 39 39 class CAddressBook; 40 class CAddressList; 40 41 41 42 namespace http { … … 46 47 { 47 48 public: 48 CCardDAVReportParser(vCard::CVCardAddressBook& vadbk, CAddressBook* adbk = NULL, bool add = false); 49 CCardDAVReportParser(vCard::CVCardAddressBook& vadbk); 50 CCardDAVReportParser(vCard::CVCardAddressBook& vadbk, CAddressBook* adbk, bool add = false); 51 CCardDAVReportParser(vCard::CVCardAddressBook& vadbk, CAddressList* addrs, bool add = false); 49 52 virtual ~CCardDAVReportParser(); 50 53 … … 53 56 vCard::CVCardAddressBook* mVAdbk; 54 57 CAddressBook* mAdbk; 58 CAddressList* mAddrs; 55 59 bool mAddItems; 56 60 … … 58 62 59 63 virtual void ParseResponse(const xmllib::XMLNode* response); 60 virtual void ParsePropStat(const xmllib::XMLNode* response, c dstring& etag);61 virtual void ParseProp(const xmllib::XMLNode* response, c dstring& etag);