📄 contact.cpp
字号:
}
return NULL;
}
VProperty* Contact::getVPropertyFromProperty(WCHAR*name, vCardProperty* prop) {
if(prop && name) {
VProperty *vprop = new VProperty(name, prop->getValue());
if(prop->getCharset())
vprop->addParameter(TEXT("CHARSET"), prop->getCharset());
if(prop->getLanguage())
vprop->addParameter(TEXT("LANGUAGE"), prop->getLanguage());
if(prop->getEncoding())
vprop->addParameter(TEXT("ENCODING"), prop->getEncoding());
return vprop;
}
return NULL;
}
VProperty* Contact::composeVAddress(Address* adr) {
WCHAR *addressValue = new WCHAR[MAX_VPROPERTY_VALUE + 1];
WCHAR *encoding = NULL;
WCHAR *language = NULL;
WCHAR *charset = NULL;
wcscpy(addressValue,TEXT(""));
if(adr->getPostOfficeAddress()) {
wcscat(addressValue, adr->getPostOfficeAddress()->getValue());
if(adr->getPostOfficeAddress()->getCharset()) {
charset = new WCHAR[MAX_VPROPERTY_VALUE +1 ];
wcscpy(charset, adr->getPostOfficeAddress()->getCharset());
}
if(adr->getPostOfficeAddress()->getLanguage()) {
language = new WCHAR[MAX_VPROPERTY_VALUE + 1];
wcscpy(language, adr->getPostOfficeAddress()->getLanguage());
}
if(adr->getPostOfficeAddress()->getEncoding()) {
encoding = new WCHAR[MAX_VPROPERTY_VALUE +1 ];
wcscpy(encoding, adr->getPostOfficeAddress()->getEncoding());
}
}
wcscat(addressValue, TEXT(";"));
if(adr->getRoomNumber()) {
wcscat(addressValue, adr->getRoomNumber()->getValue());
if(!charset)
if(adr->getRoomNumber()->getCharset()) {
charset = new WCHAR[MAX_VPROPERTY_VALUE + 1];
wcscpy(charset, adr->getRoomNumber()->getCharset());
}
if(!language)
if(adr->getRoomNumber()->getLanguage()) {
language = new WCHAR[MAX_VPROPERTY_VALUE + 1];
wcscpy(language, adr->getRoomNumber()->getLanguage());
}
if(!encoding)
if(adr->getRoomNumber()->getEncoding()) {
encoding = new WCHAR[MAX_VPROPERTY_VALUE + 1];
wcscpy(encoding, adr->getRoomNumber()->getEncoding());
}
}
wcscat(addressValue, TEXT(";"));
if(adr->getStreet()) {
wcscat(addressValue, adr->getStreet()->getValue());
if(!charset)
if(adr->getStreet()->getCharset()) {
charset = new WCHAR[MAX_VPROPERTY_VALUE + 1];
wcscpy(charset, adr->getStreet()->getCharset());
}
if(!language)
if(adr->getStreet()->getLanguage()) {
language = new WCHAR[MAX_VPROPERTY_VALUE + 1];
wcscpy(language, adr->getStreet()->getLanguage());
}
if(!encoding)
if(adr->getStreet()->getEncoding()) {
encoding = new WCHAR[MAX_VPROPERTY_VALUE + 1];
wcscpy(encoding, adr->getStreet()->getEncoding());
}
}
wcscat(addressValue, TEXT(";"));
if(adr->getCity()) {
wcscat(addressValue, adr->getCity()->getValue());
if(!charset)
if(adr->getCity()->getCharset()) {
charset = new WCHAR[MAX_VPROPERTY_VALUE + 1];
wcscpy(charset, adr->getCity()->getCharset());
}
if(!language)
if(adr->getCity()->getLanguage()) {
language = new WCHAR[MAX_VPROPERTY_VALUE + 1];
wcscpy(language, adr->getCity()->getLanguage());
}
if(!encoding)
if(adr->getCity()->getEncoding()) {
encoding = new WCHAR[MAX_VPROPERTY_VALUE + 1];
wcscpy(encoding, adr->getCity()->getEncoding());
}
}
wcscat(addressValue, TEXT(";"));
if(adr->getState()) {
wcscat(addressValue, adr->getState()->getValue());
if(!charset)
if(adr->getState()->getCharset()) {
charset = new WCHAR[MAX_VPROPERTY_VALUE + 1];
wcscpy(charset, adr->getState()->getCharset());
}
if(!language)
if(adr->getState()->getLanguage()) {
language = new WCHAR[MAX_VPROPERTY_VALUE + 1];
wcscpy(language, adr->getState()->getLanguage());
}
if(!encoding)
if(adr->getState()->getEncoding()) {
encoding = new WCHAR[MAX_VPROPERTY_VALUE + 1];
wcscpy(encoding, adr->getState()->getEncoding());
}
}
wcscat(addressValue, TEXT(";"));
if(adr->getPostalCode()) {
wcscat(addressValue, adr->getPostalCode()->getValue());
if(!charset)
if(adr->getPostalCode()->getCharset()) {
charset = new WCHAR[MAX_VPROPERTY_VALUE + 1];
wcscpy(charset, adr->getPostalCode()->getCharset());
}
if(!language)
if(adr->getPostalCode()->getLanguage()) {
language = new WCHAR[MAX_VPROPERTY_VALUE + 1];
wcscpy(language, adr->getPostalCode()->getLanguage());
}
if(!encoding)
if(adr->getPostalCode()->getEncoding()) {
encoding = new WCHAR[MAX_VPROPERTY_VALUE + 1];
wcscpy(encoding, adr->getPostalCode()->getEncoding());
}
}
wcscat(addressValue, TEXT(";"));
if(adr->getCountry()) {
wcscat(addressValue, adr->getCountry()->getValue());
if(!charset)
if(adr->getCountry()->getCharset()) {
charset = new WCHAR[MAX_VPROPERTY_VALUE + 1];
wcscpy(charset, adr->getCountry()->getCharset());
}
if(!language)
if(adr->getCountry()->getLanguage()) {
language = new WCHAR[MAX_VPROPERTY_VALUE + 1];
wcscpy(language, adr->getCountry()->getLanguage());
}
if(!encoding)
if(adr->getCountry()->getEncoding()) {
encoding = new WCHAR[MAX_VPROPERTY_VALUE + 1];
wcscpy(encoding, adr->getCountry()->getEncoding());
}
}
VProperty* vp = new VProperty(TEXT("ADR"), addressValue);
if(charset)
vp->addParameter(TEXT("CHARSET"), charset);
if(language)
vp->addParameter(TEXT("LANGUAGE"), language);
if(encoding)
vp->addParameter(TEXT("ENCODING"), encoding);
return vp;
}
Address* Contact::composeAddress(VProperty* vp, int type) {
if(vp) {
Address* adr;
switch (type) {
case BUSINESS:
if(!businessDetail || !businessDetail->getAddress())
adr = new Address();
else
adr = businessDetail->getAddress()->clone();
break;
case HOME:
if(!personalDetail || !personalDetail->getAddress())
adr = new Address();
else
adr = personalDetail->getAddress()->clone();
break;
case OTHER:
if(!personalDetail || !personalDetail->getOtherAddress())
adr = new Address();
else
adr = personalDetail->getOtherAddress()->clone();
break;
default:
return NULL;
}
if(vp->getPropComponent(1)){
vCardProperty *prop = getPropertyFromVProperty(vp);
prop->setValue(vp->getPropComponent(1));
adr->setPostOfficeAddress(*prop);
delete prop;
}
if(vp->getPropComponent(2)){
vCardProperty *prop = getPropertyFromVProperty(vp);
prop->setValue(vp->getPropComponent(2));
adr->setRoomNumber(*prop);
delete prop;
}
if(vp->getPropComponent(3)){
vCardProperty *prop = getPropertyFromVProperty(vp);
prop->setValue(vp->getPropComponent(3));
adr->setStreet(*prop);
delete prop;
}
if(vp->getPropComponent(4)){
vCardProperty *prop = getPropertyFromVProperty(vp);
prop->setValue(vp->getPropComponent(4));
adr->setCity(*prop);
delete prop;
}
if(vp->getPropComponent(5)){
vCardProperty *prop = getPropertyFromVProperty(vp);
prop->setValue(vp->getPropComponent(5));
adr->setState(*prop);
delete prop;
}
if(vp->getPropComponent(6)){
vCardProperty *prop = getPropertyFromVProperty(vp);
prop->setValue(vp->getPropComponent(6));
adr->setPostalCode(*prop);
delete prop;
}
if(vp->getPropComponent(7)){
vCardProperty *prop = getPropertyFromVProperty(vp);
prop->setValue(vp->getPropComponent(7));
adr->setCountry(*prop);
delete prop;
}
return adr;
}
return NULL;
}
Address* Contact::addLabelAddress(VProperty* vp, int type) {
if(vp) {
Address* adr;
switch (type) {
case BUSINESS:
if(!businessDetail || !businessDetail->getAddress())
adr = new Address();
else
adr = businessDetail->getAddress()->clone();
break;
case HOME:
if(!personalDetail || !personalDetail->getAddress())
adr = new Address();
else
adr = personalDetail->getAddress()->clone();
break;
case OTHER:
if(!personalDetail || !personalDetail->getOtherAddress())
adr = new Address();
else
adr = personalDetail->getOtherAddress()->clone();
break;
default:
return NULL;
}
if(vp->getValue()) {
vCardProperty *prop = getPropertyFromVProperty(vp);
adr->setLabel(*prop);
delete prop;
}
return adr;
}
return NULL;
}
Contact* Contact::clone() {
Contact* ret = new Contact();
VProperty* property;
for(int i = 0; i < this->propertiesCount(); i++) {
property = (VProperty*)this->getProperty(i)->clone();
ret->addProperty(property);
}
return ret;
}
WCHAR* Contact::toString() {
if(!containsProperty(TEXT("BEGIN")) && !containsProperty(TEXT("VERSION")) && !containsProperty(TEXT("END"))) {
//this means the Contact was created with new, not using vConverter::parse
//we need to add BEGIN, VERSION, END to VObject properties
addFirstProperty(new VProperty(TEXT("VERSION"), getVersion()));
addFirstProperty(new VProperty(TEXT("BEGIN"), TEXT("VCARD")));
addProperty(new VProperty(TEXT("END"), TEXT("VCARD")));
}
return ((VObject*)this)->toString();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -