📄 contactbuilder.cpp
字号:
pContact->get_HomeAddressPostalCode(&element);
if(wcscmp(element, TEXT("")))
value_found = true;
vp->addValue(element);
pContact->get_HomeAddressCountry(&element);
if(wcscmp(element, TEXT("")))
value_found = true;
vp->addValue(element);
if(value_found) {
vo->addProperty(vp);
}
delete vp; vp = NULL;
// END ADDRESS HOME
vp = new VProperty(TEXT("ADR"));
value_found = false;
// First two values are empty:
// "Post Office Address" and "Extended Address" not present in SIF
vp->addValue(TEXT(""));
vp->addValue(TEXT(""));
pContact->get_OtherAddressStreet(&element);
if(wcscmp(element, TEXT("")))
value_found = true;
vp->addValue(element);
pContact->get_OtherAddressCity(&element);
if(wcscmp(element, TEXT("")))
value_found = true;
vp->addValue(element);
pContact->get_OtherAddressState(&element);
if(wcscmp(element, TEXT("")))
value_found = true;
vp->addValue(element);
pContact->get_OtherAddressPostalCode(&element);
if(wcscmp(element, TEXT("")))
value_found = true;
vp->addValue(element);
pContact->get_OtherAddressCountry(&element);
if(wcscmp(element, TEXT("")))
value_found = true;
vp->addValue(element);
if(value_found) {
vo->addProperty(vp);
}
delete vp; vp = NULL;
// END OTHER
vp = new VProperty(TEXT("ADR"));
vp->addParameter(TEXT("WORK"), NULL);
value_found = false;
// First two values are empty:
// "Post Office Address" and "Extended Address" not present in SIF
vp->addValue(TEXT(""));
vp->addValue(TEXT(""));
pContact->get_BusinessAddressStreet(&element);
if(wcscmp(element, TEXT("")))
value_found = true;
vp->addValue(element);
pContact->get_BusinessAddressCity(&element);
if(wcscmp(element, TEXT("")))
value_found = true;
vp->addValue(element);
pContact->get_BusinessAddressState(&element);
if(wcscmp(element, TEXT("")))
value_found = true;
vp->addValue(element);
pContact->get_BusinessAddressPostalCode(&element);
if(wcscmp(element, TEXT("")))
value_found = true;
vp->addValue(element);
pContact->get_BusinessAddressCountry(&element);
if(wcscmp(element, TEXT("")))
value_found = true;
vp->addValue(element);
if(value_found) {
vo->addProperty(vp);
}
delete vp; vp = NULL;
// END BUSINESS
pContact->get_Body(&element);
if(wcscmp(element, TEXT(""))) {
vp = new VProperty(TEXT("NOTE"), element);
vo->addProperty(vp);
delete vp; vp = NULL;
}
vp = new VProperty(TEXT("END"), TEXT("VCARD"));
vo->addProperty(vp);
delete vp; vp = NULL;
return vo;
}
void VObjectToContact(IContact *pContact, VObject *vo) {
int businessTel = 0;
int homeTel = 0;
int email = 0;
wchar_t* name = NULL;
wchar_t* element = NULL;
for(int i = 0; i < vo->propertiesCount(); i++) {
name = vo->getProperty(i)->getName();
element = vo->getProperty(i)->getValue(0);
if(!wcscmp(name, TEXT("N"))) {
if(vo->getProperty(i)->getPropComponent(1))
pContact->put_LastName(vo->getProperty(i)->getPropComponent(1));
if(vo->getProperty(i)->getPropComponent(2))
pContact->put_FirstName(vo->getProperty(i)->getPropComponent(2));
if(vo->getProperty(i)->getPropComponent(3))
pContact->put_MiddleName(vo->getProperty(i)->getPropComponent(3));
if(vo->getProperty(i)->getPropComponent(4))
pContact->put_Title(vo->getProperty(i)->getPropComponent(4));
if(vo->getProperty(i)->getPropComponent(5))
pContact->put_Suffix(vo->getProperty(i)->getPropComponent(5));
}
else if(!wcscmp(name, TEXT("FN"))) {
pContact->put_FileAs(element);
}
else if(!wcscmp(name, TEXT("BDAY"))) {
DATE birth;
systemTimeToDoubleBirthday(element, &birth);
pContact->put_Birthday(birth);
}
else if(!wcscmp(name, TEXT("TEL")) &&
vo->getProperty(i)->containsParameter(TEXT("WORK"))) {
if (vo->getProperty(i)->containsParameter(TEXT("FAX")))
pContact->put_BusinessFaxNumber(element);
else if (vo->getProperty(i)->containsParameter(TEXT("CELL")))
;
else {
if(businessTel == 0) {
pContact->put_BusinessTelephoneNumber(element);
businessTel++;
}
else {
pContact->put_Business2TelephoneNumber(element);
}
}
}
else if(!wcscmp(name, TEXT("ORG")))
pContact->put_CompanyName(element);
else if(!wcscmp(name, TEXT("EMAIL"))) {
if (vo->getProperty(i)->containsParameter(L"HOME")) {
pContact->put_Email2Address(element);
} else if (vo->getProperty(i)->containsParameter(L"WORK")) {
pContact->put_Email3Address(element);
} else {
pContact->put_Email1Address(element);
}
/*
if(email == 0) {
pContact->put_Email1Address(element);
email++;
}
else if(email == 1) {
email++;
pContact->put_Email2Address(element);
}
else
pContact->put_Email3Address(element);
*/
}
else if(!wcscmp(name, TEXT("TEL")) &&
vo->getProperty(i)->containsParameter(TEXT("CELL")))
pContact->put_MobileTelephoneNumber(element);
else if(!wcscmp(name, TEXT("TEL")) &&
vo->getProperty(i)->containsParameter(TEXT("PAGER")))
pContact->put_PagerNumber(element);
else if(!wcscmp(name, TEXT("TITLE")))
pContact->put_JobTitle(element);
else if(!wcscmp(name, TEXT("TEL")) &&
vo->getProperty(i)->containsParameter(TEXT("HOME"))) {
if(vo->getProperty(i)->containsParameter(TEXT("FAX")))
pContact->put_HomeFaxNumber(element);
else if(vo->getProperty(i)->containsParameter(TEXT("CELL")))
;
else if(homeTel == 0) {
pContact->put_HomeTelephoneNumber(element);
homeTel++;
}
else {
pContact->put_Home2TelephoneNumber(element);
}
}
else if(!wcscmp(name, TEXT("TEL")) &&
vo->getProperty(i)->containsParameter(TEXT("CAR")))
pContact->put_CarTelephoneNumber(element);
else if(!wcscmp(name, TEXT("CATEGORIES")))
pContact->put_Categories(element);
else if(!wcscmp(name, TEXT("URL")))
pContact->put_WebPage(element);
else if(!wcscmp(name, TEXT("NOTE")))
pContact->put_Body(element);
else if(!wcscmp(name, TEXT("ADR"))) {
if(vo->getProperty(i)->containsParameter(TEXT("HOME"))) {
if(vo->getProperty(i)->getPropComponent(3))
pContact->put_HomeAddressStreet(vo->getProperty(i)->getPropComponent(3));
if(vo->getProperty(i)->getPropComponent(4))
pContact->put_HomeAddressCity(vo->getProperty(i)->getPropComponent(4));
if(vo->getProperty(i)->getPropComponent(5))
pContact->put_HomeAddressState(vo->getProperty(i)->getPropComponent(5));
if(vo->getProperty(i)->getPropComponent(6))
pContact->put_HomeAddressPostalCode(vo->getProperty(i)->getPropComponent(6));
if(vo->getProperty(i)->getPropComponent(7))
pContact->put_HomeAddressCountry(vo->getProperty(i)->getPropComponent(7));
}
else if(vo->getProperty(i)->containsParameter(TEXT("WORK"))) {
if(vo->getProperty(i)->getPropComponent(3))
pContact->put_BusinessAddressStreet(vo->getProperty(i)->getPropComponent(3));
if(vo->getProperty(i)->getPropComponent(4))
pContact->put_BusinessAddressCity(vo->getProperty(i)->getPropComponent(4));
if(vo->getProperty(i)->getPropComponent(5))
pContact->put_BusinessAddressState(vo->getProperty(i)->getPropComponent(5));
if(vo->getProperty(i)->getPropComponent(6))
pContact->put_BusinessAddressPostalCode(vo->getProperty(i)->getPropComponent(6));
if(vo->getProperty(i)->getPropComponent(7))
pContact->put_BusinessAddressCountry(vo->getProperty(i)->getPropComponent(7));
}
else {
if(vo->getProperty(i)->getPropComponent(3))
pContact->put_OtherAddressStreet(vo->getProperty(i)->getPropComponent(3));
if(vo->getProperty(i)->getPropComponent(4))
pContact->put_OtherAddressCity(vo->getProperty(i)->getPropComponent(4));
if(vo->getProperty(i)->getPropComponent(5))
pContact->put_OtherAddressState(vo->getProperty(i)->getPropComponent(5));
if(vo->getProperty(i)->getPropComponent(6))
pContact->put_OtherAddressPostalCode(vo->getProperty(i)->getPropComponent(6));
if(vo->getProperty(i)->getPropComponent(7))
pContact->put_OtherAddressCountry(vo->getProperty(i)->getPropComponent(7));
}
}
}
}
/*
* For Windows Mobile 5: use the newer interfaces to set/get properties
* that cannot be retrieved with the usual IContact interface
*/
#if _WIN32_WCE > 0x500
#define WSTRING_NULL TEXT("__@_N_U_L_L___")
wstring getStringPropertyFromMapi(CEPROPVAL *pValSrc) {
/* At the moment all the properties will be filled */
wstring value = L"";
if (!(pValSrc->wFlags & CEDB_PROPNOTFOUND)) {
value = pValSrc->val.lpwstr;
}
return value;
/*
This piece of code will be fine when the DevInfo is
proper handled by the client and the server.
When the client will send its capability, it can
send only the field that are filled. The server will
erase the other that doesn't receive
if (!(pValSrc->wFlags & CEDB_PROPNOTFOUND)) {
wstring value(pValSrc->val.lpwstr);
return value;
} else {
return WSTRING_NULL;
}
*/
}
wstring getDatePropertyFromMapi(CEPROPVAL *pValSrc) {
wchar_t tempDate[50];
wsprintf(tempDate, TEXT(""));
wstring value = L"";
if (!(pValSrc->wFlags & CEDB_PROPNOTFOUND)) {
SYSTEMTIME t;
FILETIME d = pValSrc->val.filetime;
FileTimeToSystemTime(&d, &t);
wchar_t tempDate[50];
wsprintf(tempDate, TEXT("%04d%02d%02d"), t.wYear, t.wMonth, t.wDay);
value = tempDate;
return value;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -