Changeset 149
- Timestamp:
- 01/13/08 12:24:39 (11 months ago)
- Location:
- Mulberry/branches/v4.1d1/Sources_Common
- Files:
-
- 27 modified
-
HTTP/CardDAVClient/CCardDAVQueryReport.cpp (modified) (5 diffs)
-
HTTP/CardDAVClient/CCardDAVQueryReport.h (modified) (1 diff)
-
Mail/Address/CAdbkAddress.cp (modified) (1 diff)
-
Mail/Address/CAdbkAddress.h (modified) (2 diffs)
-
Mail/Address/CGroup.cp (modified) (1 diff)
-
Mail/Address/CGroup.h (modified) (1 diff)
-
Mail/AddressBook/CAddressBook.cp (modified) (2 diffs)
-
Mail/AddressBook/CAddressBook.h (modified) (1 diff)
-
Mail/AddressBook/CAddressBookManager.cp (modified) (3 diffs)
-
Mail/AddressBook/CAddressBookManager.h (modified) (1 diff)
-
Mail/INET_Clients/ACAP/CACAPClient.cp (modified) (2 diffs)
-
Mail/INET_Clients/ACAP/CACAPClient.h (modified) (1 diff)
-
Mail/INET_Clients/CAdbkClient.h (modified) (1 diff)
-
Mail/INET_Clients/IMSP/CIMSPClient.cp (modified) (3 diffs)
-
Mail/INET_Clients/IMSP/CIMSPClient.h (modified) (1 diff)
-
Mail/Local_Clients/CLocalAdbkClient.cp (modified) (7 diffs)
-
Mail/Local_Clients/CLocalAdbkClient.h (modified) (2 diffs)
-
Mail/Local_Clients/CMacOSXAdbkClient.cp (modified) (7 diffs)
-
Mail/Local_Clients/CMacOSXAdbkClient.h (modified) (2 diffs)
-
Mail/Protocols/CAdbkProtocol.cp (modified) (1 diff)
-
Mail/Protocols/CAdbkProtocol.h (modified) (1 diff)
-
VCard_Store/Clients/CCardDAVVCardClient.cpp (modified) (5 diffs)
-
VCard_Store/Clients/CCardDAVVCardClient.h (modified) (2 diffs)
-
VCard_Store/Clients/CLocalVCardClient.cpp (modified) (2 diffs)
-
VCard_Store/Clients/CLocalVCardClient.h (modified) (1 diff)
-
VCard_Store/Clients/CWebDAVVCardClient.cpp (modified) (2 diffs)
-
VCard_Store/Clients/CWebDAVVCardClient.h (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
Mulberry/branches/v4.1d1/Sources_Common/HTTP/CardDAVClient/CCardDAVQueryReport.cpp
r148 r149 34 34 using namespace carddav; 35 35 36 CCardDAVQueryReport::CCardDAVQueryReport(CWebDAVSession* session, const cdstring& ruri, const cdstr ing& search_prop, const cdstring& search_text, const cdstring& match_type) :36 CCardDAVQueryReport::CCardDAVQueryReport(CWebDAVSession* session, const cdstring& ruri, const cdstrvect& search_props, const cdstring& search_text, const cdstring& match_type) : 37 37 CWebDAVReport(session, ruri) 38 38 { 39 InitRequestData(search_prop , search_text, match_type);39 InitRequestData(search_props, search_text, match_type); 40 40 } 41 41 … … 46 46 47 47 48 void CCardDAVQueryReport::InitRequestData(const cdstr ing& search_prop, const cdstring& search_text, const cdstring& match_type)48 void CCardDAVQueryReport::InitRequestData(const cdstrvect& search_props, 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, match_type);52 GenerateXML(os, search_props, search_text, match_type); 53 53 os << ends; 54 54 … … 56 56 } 57 57 58 void CCardDAVQueryReport::GenerateXML(std::ostream& os, const cdstr ing& search_prop, const cdstring& search_text, const cdstring& match_type)58 void CCardDAVQueryReport::GenerateXML(std::ostream& os, const cdstrvect& search_props, const cdstring& search_text, const cdstring& match_type) 59 59 { 60 60 using namespace xmllib; … … 71 71 // <C:text-match match-type="...">...</C:text-match> 72 72 // </C:prop-filter> 73 // ... 73 74 // </C:filter> 74 75 // ... … … 98 99 xmllib::XMLNode* filter = new xmllib::XMLNode(&xmldoc, query, cElement_filter.Name(), carddav_namespc); 99 100 100 // <CardDAV:prop-filter name="..."> element 101 xmllib::XMLNode* prop_filter = new xmllib::XMLNode(&xmldoc, filter, cElement_propfilter.Name(), carddav_namespc); 102 prop_filter->AddAttribute(cAttribute_name.Name(), search_prop); 101 for(cdstrvect::const_iterator iter = search_props.begin(); iter != search_props.end(); iter++) 102 { 103 // <CardDAV:prop-filter name="..."> element 104 xmllib::XMLNode* prop_filter = new xmllib::XMLNode(&xmldoc, filter, cElement_propfilter.Name(), carddav_namespc); 105 prop_filter->AddAttribute(cAttribute_name.Name(), *iter); 103 106 104 // <C:text-match match-type="...">...</C:text-match> 105 xmllib::XMLNode* text_match = new xmllib::XMLNode(&xmldoc, prop_filter, cElement_textmatch.Name(), carddav_namespc, search_text); 106 text_match->AddAttribute(cAttribute_matchtype.Name(), match_type); 107 // <C:text-match match-type="...">...</C:text-match> 108 xmllib::XMLNode* text_match = new xmllib::XMLNode(&xmldoc, prop_filter, cElement_textmatch.Name(), carddav_namespc, search_text); 109 text_match->AddAttribute(cAttribute_matchtype.Name(), match_type); 110 } 107 111 108 112 // Now we have the complete document, so write it out (no indentation) -
Mulberry/branches/v4.1d1/Sources_Common/HTTP/CardDAVClient/CCardDAVQueryReport.h
r148 r149 37 37 { 38 38 public: 39 CCardDAVQueryReport(CWebDAVSession* session, const cdstring& ruri, const cdstr ing& search_prop, const cdstring& search_text, const cdstring& match_type);39 CCardDAVQueryReport(CWebDAVSession* session, const cdstring& ruri, const cdstrvect& search_props, const cdstring& search_text, const cdstring& match_type); 40 40 virtual ~CCardDAVQueryReport(); 41 41 42 42 protected: 43 void InitRequestData(const cdstr ing& search_prop, const cdstring& search_text, const cdstring& match_type);43 void InitRequestData(const cdstrvect& search_props, const cdstring& search_text, const cdstring& match_type); 44 44 45 void GenerateXML(std::ostream& os, const cdstr ing& search_prop, const cdstring& search_text, const cdstring& match_type);45 void GenerateXML(std::ostream& os, const cdstrvect& search_props, const cdstring& search_text, const cdstring& match_type); 46 46 }; 47 47 -
Mulberry/branches/v4.1d1/Sources_Common/Mail/Address/CAdbkAddress.cp
r96 r149 134 134 135 135 // Compare specific field 136 bool CAdbkAddress::Search(const cdstring& text, EAddressField field) const136 bool CAdbkAddress::Search(const cdstring& text, const CAddressFields& fields) const 137 137 { 138 138 bool result = false; 139 139 140 switch(field) 141 { 142 case CAdbkAddress::eName: 143 result = GetName().PatternMatch(text); 144 break; 145 case CAdbkAddress::eNickName: 146 result = GetADL().PatternMatch(text); 147 break; 148 case CAdbkAddress::eEmail: 149 result = GetMailAddress().PatternMatch(text); 150 if (!result) 151 { 152 for(emailmap::const_iterator iter = GetEmails().begin(); !result && (iter != GetEmails().end()); iter++) 140 for(CAddressFields::const_iterator iter = fields.begin(); iter != fields.end(); iter++) 141 { 142 switch(*iter) 143 { 144 case CAdbkAddress::eName: 145 result = GetName().PatternMatch(text); 146 break; 147 case CAdbkAddress::eNickName: 148 result = GetADL().PatternMatch(text); 149 break; 150 case CAdbkAddress::eEmail: 151 result = GetMailAddress().PatternMatch(text); 152 if (!result) 153 { 154 for(emailmap::const_iterator iter = GetEmails().begin(); !result && (iter != GetEmails().end()); iter++) 155 result = (*iter).second.PatternMatch(text); 156 } 157 break; 158 case CAdbkAddress::eCalendar: 159 result = GetCalendar().PatternMatch(text); 160 break; 161 case CAdbkAddress::eCompany: 162 result = GetCompany().PatternMatch(text); 163 break; 164 case CAdbkAddress::eAddress: 165 for(addrmap::const_iterator iter = GetAddresses().begin(); !result && (iter != GetAddresses().end()); iter++) 153 166 result = (*iter).second.PatternMatch(text); 154 } 155 break; 156 case CAdbkAddress::eCalendar: 157 result = GetCalendar().PatternMatch(text); 158 break; 159 case CAdbkAddress::eCompany: 160 result = GetCompany().PatternMatch(text); 161 break; 162 case CAdbkAddress::eAddress: 163 for(addrmap::const_iterator iter = GetAddresses().begin(); !result && (iter != GetAddresses().end()); iter++) 164 result = (*iter).second.PatternMatch(text); 165 break; 166 case CAdbkAddress::ePhoneWork: 167 result = GetPhone(eWorkPhoneType).PatternMatch(text); 168 break; 169 case CAdbkAddress::ePhoneHome: 170 result = GetPhone(eHomePhoneType).PatternMatch(text); 171 break; 172 case CAdbkAddress::eFax: 173 result = GetPhone(eFaxType).PatternMatch(text) || 174 GetPhone(eHomeFaxType).PatternMatch(text) || 175 GetPhone(eWorkFaxType).PatternMatch(text); 176 break; 177 case CAdbkAddress::eURL: 178 result = GetURL().PatternMatch(text); 179 break; 180 case CAdbkAddress::eNotes: 181 result = GetNotes().PatternMatch(text); 182 break; 183 default:; 184 } 185 167 break; 168 case CAdbkAddress::ePhoneWork: 169 result = GetPhone(eWorkPhoneType).PatternMatch(text); 170 break; 171 case CAdbkAddress::ePhoneHome: 172 result = GetPhone(eHomePhoneType).PatternMatch(text); 173 break; 174 case CAdbkAddress::eFax: 175 result = GetPhone(eFaxType).PatternMatch(text) || 176 GetPhone(eHomeFaxType).PatternMatch(text) || 177 GetPhone(eWorkFaxType).PatternMatch(text); 178 break; 179 case CAdbkAddress::eURL: 180 result = GetURL().PatternMatch(text); 181 break; 182 case CAdbkAddress::eNotes: 183 result = GetNotes().PatternMatch(text); 184 break; 185 default:; 186 } 187 188 if (result) 189 break; 190 } 191 186 192 return result; 187 193 } -
Mulberry/branches/v4.1d1/Sources_Common/Mail/Address/CAdbkAddress.h
r86 r149 106 106 }; 107 107 108 typedef vector<EAddressField> CAddressFields; 108 109 typedef multimap<EEmailType, cdstring> emailmap; 109 110 typedef multimap<EAddressType, cdstring> addrmap; … … 151 152 static void ExpandMatch(EAddressMatch match, cdstring& str); 152 153 153 bool Search(const cdstring& text, CAdbkAddress::EAddressField field) const; // Compare specific field154 bool Search(const cdstring& text, const CAdbkAddress::CAddressFields& fields) const; // Compare specific fields 154 155 155 156 void SetEntry(const char* theEntry) // Set entry -
Mulberry/branches/v4.1d1/Sources_Common/Mail/Address/CGroup.cp
r19 r149 90 90 91 91 // Compare specific field 92 bool CGroup::Search(const cdstring& text, CAdbkAddress::EAddressField field) const92 bool CGroup::Search(const cdstring& text, const CAdbkAddress::CAddressFields& fields) const 93 93 { 94 94 bool result = false; 95 95 96 switch(field)96 for(CAdbkAddress::CAddressFields::const_iterator iter = fields.begin(); iter != fields.end(); iter++) 97 97 { 98 case CAdbkAddress::eName: 99 result = GetName().PatternMatch(text); 100 break; 101 case CAdbkAddress::eNickName: 102 result = GetNickName().PatternMatch(text); 103 break; 104 default:; 98 switch(*iter) 99 { 100 case CAdbkAddress::eName: 101 result = GetName().PatternMatch(text); 102 break; 103 case CAdbkAddress::eNickName: 104 result = GetNickName().PatternMatch(text); 105 break; 106 default:; 107 } 108 109 if (result) 110 break; 105 111 } 106 112 -
Mulberry/branches/v4.1d1/Sources_Common/Mail/Address/CGroup.h
r19 r149 68 68 int operator==(const CGroup& grp) const; // Compare with another 69 69 70 bool Search(const cdstring& text, CAdbkAddress::EAddressField field) const; // Compare specific field70 bool Search(const cdstring& text, const CAdbkAddress::CAddressFields& fields) const; // Compare specific field 71 71 72 72 void SetEntry(const char* theEntry) // Set entry -
Mulberry/branches/v4.1d1/Sources_Common/Mail/AddressBook/CAddressBook.cp
r148 r149 1465 1465 1466 1466 // Do search 1467 void CAddressBook::SearchAddress(const cdstring& name, CAdbkAddress::EAddressMatch match, CAdbkAddress::EAddressField field, CAddressList& addr_list)1467 void CAddressBook::SearchAddress(const cdstring& name, CAdbkAddress::EAddressMatch match, const CAdbkAddress::CAddressFields& fields, CAddressList& addr_list) 1468 1468 { 1469 1469 // Do remote lookup only if not open 1470 1470 if (!IsOpen()) 1471 mProtocol->SearchAddress(this, name, match, field , addr_list);1471 mProtocol->SearchAddress(this, name, match, fields, addr_list); 1472 1472 else 1473 1473 { … … 1485 1485 1486 1486 // Do comparison of specific field 1487 result = addr->Search(matchit, field );1487 result = addr->Search(matchit, fields); 1488 1488 1489 1489 // Check for matching item -
Mulberry/branches/v4.1d1/Sources_Common/Mail/AddressBook/CAddressBook.h
r86 r149 287 287 void SearchAddress(const cdstring& name, 288 288 CAdbkAddress::EAddressMatch match, 289 CAdbkAddress::EAddressField field,289 const CAdbkAddress::CAddressFields& fields, 290 290 CAddressList& addr_list); // Do search 291 291 -
Mulberry/branches/v4.1d1/Sources_Common/Mail/AddressBook/CAddressBookManager.cp
r96 r149 913 913 void CAddressBookManager::SearchAddress(const cdstring& name, CAdbkAddress::EAddressMatch match, CAdbkAddress::EAddressField field, CAddressList& results) 914 914 { 915 // Search 916 CAdbkAddress::CAddressFields fields; 917 fields.push_back(field); 918 SearchAddress(name, match, fields, results); 919 } 920 921 // Do search 922 void CAddressBookManager::SearchAddress(const cdstring& name, CAdbkAddress::EAddressMatch match, const CAdbkAddress::CAddressFields& fields, CAddressList& results) 923 { 915 924 // Look through all address books 916 925 for(CAddressBookList::const_iterator iter = mAdbkSearch.begin(); iter != mAdbkSearch.end(); iter++) … … 922 931 #endif 923 932 924 (*iter)->SearchAddress(name, match, field , results);933 (*iter)->SearchAddress(name, match, fields, results); 925 934 } 926 935 } … … 1195 1204 // See if it exists 1196 1205 CAddressList found; 1197 adbk->SearchAddress(email, CAdbkAddress::eMatchExactly, CAdbkAddress::eEmail, found); 1206 CAdbkAddress::CAddressFields fields; 1207 fields.push_back(CAdbkAddress::eEmail); 1208 adbk->SearchAddress(email, CAdbkAddress::eMatchExactly, fields, found); 1198 1209 1199 1210 // If its empty then do capture -
Mulberry/branches/v4.1d1/Sources_Common/Mail/AddressBook/CAddressBookManager.h
r86 r149 147 147 CAdbkAddress::EAddressField field, 148 148 CAddressList& results); // Do search 149 void SearchAddress(const cdstring& name, 150 CAdbkAddress::EAddressMatch match, 151 const CAdbkAddress::CAddressFields& fields, 152 CAddressList& results); // Do search 149 153 void SearchAddress(EAddrLookup method, 150 154 bool expanding, -
Mulberry/branches/v4.1d1/Sources_Common/Mail/INET_Clients/ACAP/CACAPClient.cp
r148 r149 1049 1049 const cdstring& name, 1050 1050 CAdbkAddress::EAddressMatch match, 1051 CAdbkAddress::EAddressField field,1051 const CAdbkAddress::CAddressFields& fields, 1052 1052 CAddressList& addr_list) 1053 1053 { … … 1063 1063 cdstring dataset = GetAdbkDataset(adbk->GetName()); 1064 1064 cdstring criteria = cADBKDATASET_ATTR; 1065 switch(field )1065 switch(fields.front()) // OK so this won't do multiple fields, but no one really uses ACAP. 1066 1066 { 1067 1067 case CAdbkAddress::eName: -
Mulberry/branches/v4.1d1/Sources_Common/Mail/INET_Clients/ACAP/CACAPClient.h
r148 r149 178 178 const cdstring& name, 179 179 CAdbkAddress::EAddressMatch match, 180 CAdbkAddress::EAddressField field,180 const CAdbkAddress::CAddressFields& fields, 181 181 CAddressList& addr_list); // Do search 182 182 -
Mulberry/branches/v4.1d1/Sources_Common/Mail/INET_Clients/CAdbkClient.h
r148 r149 95 95 const cdstring& name, 96 96 CAdbkAddress::EAddressMatch match, 97 CAdbkAddress::EAddressField field,97 const CAdbkAddress::CAddressFields& fields, 98 98 CAddressList& addr_list) = 0; // Do search 99 99 -
Mulberry/branches/v4.1d1/Sources_Common/Mail/INET_Clients/IMSP/CIMSPClient.cp
r148 r149 1019 1019 const cdstring& name, 1020 1020 CAdbkAddress::EAddressMatch match, 1021 CAdbkAddress::EAddressField field,1021 const CAdbkAddress::CAddressFields& fields, 1022 1022 CAddressList& addr_list) 1023 1023 { … … 1031 1031 mSearchResults = &addr_list; 1032 1032 1033 cdstring criteria;1034 switch(field)1035 {1036 case CAdbkAddress::eName:1037 criteria = cADDRESS_NAME;1038 break;1039 case CAdbkAddress::eNickName:1040 criteria = cADDRESS_ALIAS;1041 break;1042 case CAdbkAddress::eEmail:1043 criteria = cADDRESS_EMAIL;1044 break;1045 case CAdbkAddress::eCompany:1046 criteria = cADDRESS_COMPANY;1047 break;1048 case CAdbkAddress::eAddress:1049 criteria = cADDRESS_ADDRESS;1050 break;1051 case CAdbkAddress::ePhoneWork:1052 criteria = cADDRESS_PHONE_WORK;1053 break;1054 case CAdbkAddress::ePhoneHome:1055 criteria = cADDRESS_PHONE_HOME;1056 break;1057 case CAdbkAddress::eFax:1058 criteria = cADDRESS_FAX;1059 break;1060 case CAdbkAddress::eURL:1061 criteria = cADDRESS_URLS;1062 break;1063 case CAdbkAddress::eNotes:1064 criteria = cADDRESS_NOTES;1065 break;1066 default:;1067 }1068 1069 1033 cdstring lookup(name); 1070 1034 CAdbkAddress::ExpandMatch(match, lookup); … … 1076 1040 INETSendString(cSpace); 1077 1041 INETSendString(adbk->GetName(), eQueueProcess); 1078 INETSendString(cSpace); 1079 INETSendString(criteria); 1080 INETSendString(cSpace); 1081 INETSendString(lookup, eQueueProcess); 1042 for(CAdbkAddress::CAddressFields::const_iterator iter = fields.begin(); iter != fields.end(); iter++) 1043 { 1044 cdstring criteria; 1045 switch(*iter) 1046 { 1047 case CAdbkAddress::eName: 1048 criteria = cADDRESS_NAME; 1049 break; 1050 case CAdbkAddress::eNickName: 1051 criteria = cADDRESS_ALIAS; 1052 break; 1053 case CAdbkAddress::eEmail: 1054 criteria = cADDRESS_EMAIL; 1055 break; 1056 case CAdbkAddress::eCompany: 1057 criteria = cADDRESS_COMPANY; 1058 break; 1059 case CAdbkAddress::eAddress: 1060 criteria = cADDRESS_ADDRESS; 1061 break; 1062 case CAdbkAddress::ePhoneWork: 1063 criteria = cADDRESS_PHONE_WORK; 1064 break; 1065 case CAdbkAddress::ePhoneHome: 1066 criteria = cADDRESS_PHONE_HOME; 1067 break; 1068 case CAdbkAddress::eFax: 1069 criteria = cADDRESS_FAX; 1070 break; 1071 case CAdbkAddress::eURL: 1072 criteria = cADDRESS_URLS; 1073 break; 1074<