📄 contact.cpp
字号:
businessDetail->setAddress(*adr);
delete adr;
}
if(!wcscmp(getProperty(i)->getName(), TEXT("ROLE")))
if(getProperty(i)->getValue()) {
vCardProperty *prop = getPropertyFromVProperty(getProperty(i));
if(!businessDetail)
businessDetail = new BusinessDetail();
businessDetail->setRole(*prop);
delete prop;
}
if(!wcscmp(getProperty(i)->getName(), TEXT("TITLE")))
if(getProperty(i)->getValue()) {
titles[titlesIndex] = new WCHAR[MAX_VPROPERTY_VALUE + 1];
wcscpy(titles[titlesIndex], getProperty(i)->getValue());
titlesIndex++;
}
if(!wcscmp(getProperty(i)->getName(), TEXT("ORG")))
if(getProperty(i)->getValue()) {
vCardProperty *prop = getPropertyFromVProperty(getProperty(i));
if(!businessDetail)
businessDetail = new BusinessDetail();
businessDetail->setCompany(*prop);
delete prop;
}
if(!wcscmp(getProperty(i)->getName(), TEXT("LOGO")))
if(getProperty(i)->getValue()) {
vCardProperty *prop = getPropertyFromVProperty(getProperty(i));
if(!businessDetail)
businessDetail = new BusinessDetail();
businessDetail->setLogo(*prop);
delete prop;
}
if(!wcscmp(getProperty(i)->getName(), TEXT("TEL")))
if(getProperty(i)->isType(TEXT("WORK"))) {
if(getProperty(i)->isType(TEXT("CELL"))) {
vCardProperty* prop = getPropertyFromVProperty(getProperty(i));
Phone* phone = new Phone();
phone->setPhoneNumber(*prop);
phone->setType(TEXT("MobileBusinessTelephoneNumber"));
if(!phones)
phones = new ArrayList();
phones->add((ArrayElement&) *phone);
delete phone;
}
if(getProperty(i)->isType(TEXT("VOICE"))) {
vCardProperty* prop = getPropertyFromVProperty(getProperty(i));
Phone* phone = new Phone();
phone->setPhoneNumber(*prop);
phone->setType(TEXT("BusinessTelephoneNumber"));
if(!phones)
phones = new ArrayList();
phones->add((ArrayElement&) *phone);
delete phone;
}
if(getProperty(i)->isType(TEXT("FAX"))) {
vCardProperty* prop = getPropertyFromVProperty(getProperty(i));
Phone* phone = new Phone();
phone->setPhoneNumber(*prop);
phone->setType(TEXT("BusinessFaxNumber"));
if(!phones)
phones = new ArrayList();
phones->add((ArrayElement&) *phone);
delete phone;
}
}
if(!wcscmp(getProperty(i)->getName(), TEXT("EMAIL")))
if(getProperty(i)->containsParameter(TEXT("WORK")) && getProperty(i)->isType(TEXT("INTERNET"))) {
vCardProperty* prop = getPropertyFromVProperty(getProperty(i));
Email* email = new Email();
email->setEmailAddress(*prop);
email->setType(TEXT("Email3Address"));
if(!emails)
emails = new ArrayList();
emails->add((ArrayElement&) *email);
delete email;
}
if(!wcscmp(getProperty(i)->getName(), TEXT("URL")))
if(getProperty(i)->containsParameter(TEXT("WORK"))) {
vCardProperty* prop = getPropertyFromVProperty(getProperty(i));
WebPage* url = new WebPage();
url->setWebPage(*prop);
url->setType(TEXT("BusinessWebPage"));
if(!webPages)
webPages = new ArrayList();
webPages->add((ArrayElement&) *url);
delete url;
}
}
if(titlesIndex>0) {
if(!businessDetail)
businessDetail = new BusinessDetail();
businessDetail->setTitles(titles, titlesIndex);
delete *titles;
}
if(phones) {
if(!contactDetail)
contactDetail = new ContactDetail();
contactDetail->setPhones(*phones);
delete phones;
}
if(emails) {
if(!contactDetail)
contactDetail = new ContactDetail();
contactDetail->setEmails(*emails);
delete emails;
}
if(webPages) {
if(!contactDetail)
contactDetail = new ContactDetail();
contactDetail->setWebPages(*webPages);
delete webPages;
}
if(contactDetail) {
if(!businessDetail)
businessDetail = new BusinessDetail();
businessDetail->setContactDetail(*contactDetail);
delete contactDetail;
}
}
return businessDetail;
}
void Contact::setBusinessDetail(BusinessDetail& d) {
if (businessDetail) delete businessDetail;
businessDetail = d.clone();
for(int i = 0, m = propertiesCount(); i < m;i++) {
if(!wcscmp(getProperty(i)->getName(), TEXT("ADR")) && getProperty(i)->isType(TEXT("WORK"))) {
removeProperty(i);
--i;
--m;
}
if(!wcscmp(getProperty(i)->getName(), TEXT("LABEL")) && getProperty(i)->isType(TEXT("WORK"))) {
removeProperty(i);
--i;
--m;
}
if(!wcscmp(getProperty(i)->getName(), TEXT("ROLE"))) {
removeProperty(i);
--i;
--m;
}
if(!wcscmp(getProperty(i)->getName(), TEXT("TITLE"))) {
removeProperty(i);
--i;
--m;
}
if(!wcscmp(getProperty(i)->getName(), TEXT("ORG"))) {
removeProperty(i);
--i;
--m;
}
if(!wcscmp(getProperty(i)->getName(), TEXT("LOGO"))) {
removeProperty(i);
--i;
--m;
}
if(!wcscmp(getProperty(i)->getName(), TEXT("TEL")) && getProperty(i)->isType(TEXT("WORK"))) {
removeProperty(i);
--i;
--m;
}
if(!wcscmp(getProperty(i)->getName(), TEXT("EMAIL")) && getProperty(i)->containsParameter(TEXT("WORK"))
&& getProperty(i)->isType(TEXT("INTERNET"))) {
removeProperty(i);
--i;
--m;
}
if(!wcscmp(getProperty(i)->getName(), TEXT("URL")) && getProperty(i)->containsParameter(TEXT("WORK"))) {
removeProperty(i);
--i;
--m;
}
}
if(businessDetail) {
if(businessDetail->getAddress()) {
VProperty* vp = composeVAddress(businessDetail->getAddress());
vp->addParameter(TEXT("TYPE"), TEXT("WORK"));
insertProperty(vp);
if(businessDetail->getAddress()->getLabel()) {
VProperty* vp = getVPropertyFromProperty(TEXT("LABEL"),businessDetail->getAddress()->getLabel());
vp->addParameter(TEXT("TYPE"), TEXT("WORK"));
insertProperty(vp);
}
}
if(businessDetail->getContactDetail()) {
if(businessDetail->getContactDetail()->getEmails()) {
ArrayList* emails = businessDetail->getContactDetail()->getEmails();
for (int i=0; i<emails->size(); ++i) {
if(((Email*) emails->get(i))->getProperty()) {
VProperty* vp = getVPropertyFromProperty(TEXT("EMAIL"), ((Email*)emails->get(i))->getProperty());
vp->addParameter(TEXT("WORK"), NULL);
vp->addParameter(TEXT("TYPE"),TEXT("INTERNET"));
insertProperty(vp);
}
}
}
if(businessDetail->getContactDetail()->getWebPages()) {
ArrayList* webs = businessDetail->getContactDetail()->getWebPages();
for (int i=0; i<webs->size(); ++i) {
if(((WebPage*) webs->get(i))->getProperty()) {
VProperty* vp = getVPropertyFromProperty(TEXT("URL"), ((WebPage*)webs->get(i))->getProperty());
vp->addParameter(TEXT("WORK"), NULL);
insertProperty(vp);
}
}
}
if(businessDetail->getContactDetail()->getPhones()) {
ArrayList* phones = businessDetail->getContactDetail()->getPhones();
for (int i=0; i<phones->size(); ++i)
if(((Phone*) phones->get(i))->getProperty()) {
VProperty* vp = getVPropertyFromProperty(TEXT("TEL"), ((Phone*)phones->get(i))->getProperty());
if(!wcscmp(TEXT("MobileBusinessTelephoneNumber"),((Phone*)phones->get(i))->getType()))
vp->addParameter(TEXT("TYPE"),TEXT("WORK,CELL"));
if(!wcscmp(TEXT("BusinessTelephoneNumber"),((Phone*)phones->get(i))->getType()))
vp->addParameter(TEXT("TYPE"),TEXT("WORK,VOICE"));
if(!wcscmp(TEXT("BusinessFaxNumber"),((Phone*)phones->get(i))->getType()))
vp->addParameter(TEXT("TYPE"),TEXT("WORK,FAX"));
insertProperty(vp);
}
}
}
if(businessDetail->getRole()) {
VProperty* vp = getVPropertyFromProperty(TEXT("ROLE"), businessDetail->getRole());
insertProperty(vp);
}
if(businessDetail->getLogo()) {
VProperty* vp = getVPropertyFromProperty(TEXT("LOGO"), businessDetail->getLogo());
insertProperty(vp);
}
if(businessDetail->getCompany()) {
VProperty* vp = getVPropertyFromProperty(TEXT("ORG"), businessDetail->getCompany());
insertProperty(vp);
}
if(businessDetail->getTitles()) {
ArrayList* titles = businessDetail->getTitles();
for (int i=0; i<titles->size(); ++i) {
if(((Title*)titles->get(i))->getProperty()) {
VProperty* vp = getVPropertyFromProperty(TEXT("TITLE"), ((Title*)titles->get(i))->getProperty());
insertProperty(vp);
}
}
}
}
}
PersonalDetail* Contact::getPersonalDetail() {
if(!personalDetail) {
ArrayList* phones = new ArrayList();
ArrayList* emails = new ArrayList();
ArrayList* webPages = new ArrayList();
ContactDetail* contactDetail = NULL;
Address* adr = NULL;
for(int i = 0; i<propertiesCount();i++) {
if(!wcscmp(getProperty(i)->getName(), TEXT("ADR")) && getProperty(i)->isType(TEXT("HOME")))
if(getProperty(i)->getValue()) {
adr = composeAddress(getProperty(i), HOME);
if(!personalDetail)
personalDetail = new PersonalDetail();
personalDetail->setAddress(*adr);
delete adr;
}
if(!wcscmp(getProperty(i)->getName(), TEXT("LABEL")) && getProperty(i)->isType(TEXT("HOME")))
if(getProperty(i)->getValue()) {
adr = addLabelAddress(getProperty(i), HOME);
if(!personalDetail)
personalDetail = new PersonalDetail();
personalDetail->setAddress(*adr);
delete adr;
}
if(!wcscmp(getProperty(i)->getName(), TEXT("ADR")) && !getProperty(i)->isType(TEXT("HOME"))
&& !getProperty(i)->isType(TEXT("WORK")))
if(getProperty(i)->getValue()) {
adr = composeAddress(getProperty(i), OTHER);
if(!personalDetail)
personalDetail = new PersonalDetail();
personalDetail->setOtherAddress(*adr);
delete adr;
}
if(!wcscmp(getProperty(i)->getName(), TEXT("LABEL")) && !getProperty(i)->isType(TEXT("HOME"))
&& !getProperty(i)->isType(TEXT("WORK")))
if(getProperty(i)->getValue()) {
adr = addLabelAddress(getProperty(i), OTHER);
if(!personalDetail)
personalDetail = new PersonalDetail();
personalDetail->setOtherAddress(*adr);
delete adr;
}
if(!wcscmp(getProperty(i)->getName(), TEXT("PHOTO")))
if(getProperty(i)->getValue()) {
vCardProperty* prop = getPropertyFromVProperty(getProperty(i));
if(!personalDetail)
personalDetail = new PersonalDetail();
personalDetail->setPhoto(*prop);
}
if(!wcscmp(getProperty(i)->getName(), TEXT("BDAY")) && getProperty(i)->getValue()) {
if(!personalDetail)
personalDetail = new PersonalDetail();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -