| | 984 | |
| | 985 | void CLocalVCardClient::SearchAddressBook(CAddressBook* adbk, const cdstring& pattern, const CAdbkAddress::CAddressFields& fields, |
| | 986 | CAddressList* addr_list, CGroupList* grp_list) |
| | 987 | { |
| | 988 | // Map adbk field to vCard property |
| | 989 | cdstrvect prop_names; |
| | 990 | for(CAdbkAddress::CAddressFields::const_iterator iter = fields.begin(); iter != fields.end(); iter++) |
| | 991 | { |
| | 992 | switch(*iter) |
| | 993 | { |
| | 994 | case CAdbkAddress::eName: |
| | 995 | prop_names.push_back(vCard::cVCardProperty_FN); |
| | 996 | break; |
| | 997 | case CAdbkAddress::eNickName: |
| | 998 | prop_names.push_back(vCard::cVCardProperty_NICKNAME); |
| | 999 | break; |
| | 1000 | case CAdbkAddress::eEmail: |
| | 1001 | prop_names.push_back(vCard::cVCardProperty_EMAIL); |
| | 1002 | break; |
| | 1003 | case CAdbkAddress::eCompany: |
| | 1004 | prop_names.push_back(vCard::cVCardProperty_ORG); |
| | 1005 | break; |
| | 1006 | case CAdbkAddress::eAddress: |
| | 1007 | prop_names.push_back(vCard::cVCardProperty_ADR); |
| | 1008 | break; |
| | 1009 | case CAdbkAddress::ePhoneWork: |
| | 1010 | prop_names.push_back(vCard::cVCardProperty_TEL); |
| | 1011 | break; |
| | 1012 | case CAdbkAddress::ePhoneHome: |
| | 1013 | prop_names.push_back(vCard::cVCardProperty_TEL); |
| | 1014 | break; |
| | 1015 | case CAdbkAddress::eFax: |
| | 1016 | prop_names.push_back(vCard::cVCardProperty_TEL); |
| | 1017 | break; |
| | 1018 | case CAdbkAddress::eURL: |
| | 1019 | prop_names.push_back(vCard::cVCardProperty_URL); |
| | 1020 | break; |
| | 1021 | case CAdbkAddress::eNotes: |
| | 1022 | prop_names.push_back(vCard::cVCardProperty_NOTE); |
| | 1023 | break; |
| | 1024 | } |
| | 1025 | } |
| | 1026 | |
| | 1027 | // Get name for new file |
| | 1028 | cdstring fpath = MapAdbkName(adbk); |
| | 1029 | |
| | 1030 | // Make sure it already exists |
| | 1031 | if (!::fileexists(fpath)) |
| | 1032 | { |
| | 1033 | //throw CGeneralException(-1, "Address Book file does not exist"); |
| | 1034 | throw CGeneralException(-1); |
| | 1035 | } |
| | 1036 | |
| | 1037 | // Read address book from file |
| | 1038 | cdifstream is(fpath); |
| | 1039 | vCard::CVCardAddressBook temp; |
| | 1040 | temp.Parse(is); |
| | 1041 | |
| | 1042 | vcardstore::SearchVCards(temp, pattern, prop_names, adbk, addr_list); |
| | 1043 | |
| | 1044 | } |