📄 contact.cpp
字号:
personalDetail->setBirthday(getProperty(i)->getValue());
}
if(!wcscmp(getProperty(i)->getName(), TEXT("TEL"))) {
if(getProperty(i)->isType(TEXT("HOME"))) {
if(getProperty(i)->isType(TEXT("CELL"))) {
vCardProperty* prop = getPropertyFromVProperty(getProperty(i));
Phone* phone = new Phone();
phone->setPhoneNumber(*prop);
phone->setType(TEXT("MobileHomeTelephoneNumber"));
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("HomeTelephoneNumber"));
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("HomeFaxNumber"));
phones->add((ArrayElement&) *phone);
delete phone;
}
}
if(getProperty(i)->containsParameter(TEXT("PAGER"))) {
vCardProperty* prop = getPropertyFromVProperty(getProperty(i));
Phone* phone = new Phone();
phone->setPhoneNumber(*prop);
phone->setType(TEXT("PagerNumber"));
phones->add((ArrayElement&) *phone);
delete phone;
}
if(getProperty(i)->isType(TEXT("CELL")) && !getProperty(i)->isType(TEXT("HOME"))
&& !getProperty(i)->isType(TEXT("WORK"))) {
vCardProperty* prop = getPropertyFromVProperty(getProperty(i));
Phone* phone = new Phone();
phone->setPhoneNumber(*prop);
phone->setType(TEXT("MobileTelephoneNumber"));
phones->add((ArrayElement&) *phone);
delete phone;
}
if(getProperty(i)->isType(TEXT("VOICE")) && !getProperty(i)->isType(TEXT("HOME"))
&& !getProperty(i)->isType(TEXT("WORK"))) {
vCardProperty* prop = getPropertyFromVProperty(getProperty(i));
Phone* phone = new Phone();
phone->setPhoneNumber(*prop);
phone->setType(TEXT("OtherTelephoneNumber"));
phones->add((ArrayElement&) *phone);
delete phone;
}
if(getProperty(i)->isType(TEXT("FAX")) && !getProperty(i)->isType(TEXT("HOME"))
&& !getProperty(i)->isType(TEXT("WORK"))) {
vCardProperty* prop = getPropertyFromVProperty(getProperty(i));
Phone* phone = new Phone();
phone->setPhoneNumber(*prop);
phone->setType(TEXT("OtherFaxNumber"));
phones->add((ArrayElement&) *phone);
delete phone;
}
}
if(!wcscmp(getProperty(i)->getName(), TEXT("EMAIL"))) {
if(getProperty(i)->containsParameter(TEXT("HOME")) && getProperty(i)->isType(TEXT("INTERNET"))) {
vCardProperty* prop = getPropertyFromVProperty(getProperty(i));
Email* email = new Email();
email->setEmailAddress(*prop);
email->setType(TEXT("Email2Address"));
emails->add((ArrayElement&) *email);
delete email;
}
if(getProperty(i)->isType(TEXT("INTERNET")) && !getProperty(i)->containsParameter(TEXT("HOME"))
&& !getProperty(i)->containsParameter(TEXT("WORK"))) {
vCardProperty* prop = getPropertyFromVProperty(getProperty(i));
Email* email = new Email();
email->setEmailAddress(*prop);
email->setType(TEXT("Email1Address"));
emails->add((ArrayElement&) *email);
delete email;
}
}
if(!wcscmp(getProperty(i)->getName(), TEXT("URL"))) {
if(getProperty(i)->containsParameter(TEXT("HOME"))) {
vCardProperty* prop = getPropertyFromVProperty(getProperty(i));
WebPage* url = new WebPage();
url->setWebPage(*prop);
url->setType(TEXT("HomeWebPage"));
webPages->add((ArrayElement&) *url);
delete url;
}
if(!getProperty(i)->containsParameter(TEXT("HOME")) && !getProperty(i)->containsParameter(TEXT("WORK"))) {
vCardProperty* prop = getPropertyFromVProperty(getProperty(i));
WebPage* url = new WebPage();
url->setWebPage(*prop);
url->setType(TEXT("WebPage"));
webPages->add((ArrayElement&) *url);
delete url;
}
}
} //end for VProperties
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(!personalDetail)
personalDetail = new PersonalDetail();
personalDetail->setContactDetail(*contactDetail);
delete contactDetail;
}
}
return personalDetail;
}
void Contact::setPersonalDetail(PersonalDetail& d) {
if (personalDetail) delete personalDetail;
personalDetail = d.clone();
for(int i = 0, m = propertiesCount(); i < m ; i++) {
if(!wcscmp(getProperty(i)->getName(), TEXT("ADR")) && getProperty(i)->isType(TEXT("HOME"))) {
removeProperty(i);
--i;
--m;
}
if(!wcscmp(getProperty(i)->getName(), TEXT("ADR")) && !getProperty(i)->isType(TEXT("HOME"))
&& !getProperty(i)->isType(TEXT("WORK"))) {
removeProperty(i);
--i;
--m;
}
if(!wcscmp(getProperty(i)->getName(), TEXT("LABEL")) && getProperty(i)->isType(TEXT("HOME"))) {
removeProperty(i);
--i;
--m;
}
if(!wcscmp(getProperty(i)->getName(), TEXT("LABEL")) && !getProperty(i)->isType(TEXT("HOME"))
&& !getProperty(i)->isType(TEXT("WORK"))) {
removeProperty(i);
--i;
--m;
}
if(!wcscmp(getProperty(i)->getName(), TEXT("PHOTO"))) {
removeProperty(i);
--i;
--m;
}
if(!wcscmp(getProperty(i)->getName(), TEXT("BDAY"))) {
removeProperty(i);
--i;
--m;
}
if(!wcscmp(getProperty(i)->getName(), TEXT("TEL")) && !getProperty(i)->isType(TEXT("WORK")))
if(getProperty(i)->isType(TEXT("CELL")) || getProperty(i)->isType(TEXT("VOICE"))
|| getProperty(i)->isType(TEXT("FAX"))) {
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(personalDetail) {
if(personalDetail->getAddress()) {
VProperty* vp = composeVAddress(personalDetail->getAddress());
vp->addParameter(TEXT("TYPE"),TEXT("HOME"));
insertProperty(vp);
if(personalDetail->getAddress()->getLabel()) {
VProperty* vp = getVPropertyFromProperty(TEXT("LABEL"),personalDetail->getAddress()->getLabel());
vp->addParameter(TEXT("TYPE"),TEXT("HOME"));
insertProperty(vp);
}
}
if(personalDetail->getOtherAddress()) {
VProperty* vp = composeVAddress(personalDetail->getOtherAddress());
insertProperty(vp);
if(personalDetail->getOtherAddress()->getLabel()) {
VProperty* vp = getVPropertyFromProperty(TEXT("LABEL"),personalDetail->getOtherAddress()->getLabel());
insertProperty(vp);
}
}
if(personalDetail->getContactDetail()) {
if(personalDetail->getContactDetail()->getEmails()) {
ArrayList* emails = personalDetail->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());
if(!wcscmp(TEXT("Email2Address") ,((Email*)emails->get(i))->getType()))
vp->addParameter(TEXT("HOME"), NULL);
vp->addParameter(TEXT("TYPE"),TEXT("INTERNET"));
insertProperty(vp);
}
}
}
if(personalDetail->getContactDetail()->getWebPages()) {
ArrayList* webs = personalDetail->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());
if(!wcscmp(TEXT("HomeWebPage") ,((WebPage*)webs->get(i))->getType()))
vp->addParameter(TEXT("HOME"), NULL);
insertProperty(vp);
}
}
}
if(personalDetail->getContactDetail()->getPhones()) {
ArrayList* phones = personalDetail->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("MobileTelephoneNumber"),((Phone*)phones->get(i))->getType()))
vp->addParameter(TEXT("TYPE"), TEXT("CELL"));
if(!wcscmp(TEXT("MobileHomeTelephoneNumber"),((Phone*)phones->get(i))->getType()))
vp->addParameter(TEXT("TYPE"),TEXT("HOME,CELL"));
if(!wcscmp(TEXT("OtherTelephoneNumber"),((Phone*)phones->get(i))->getType()))
vp->addParameter(TEXT("TYPE"),TEXT("VOICE"));
if(!wcscmp(TEXT("HomeTelephoneNumber"),((Phone*)phones->get(i))->getType()))
vp->addParameter(TEXT("TYPE"),TEXT("HOME,VOICE"));
if(!wcscmp(TEXT("OtherFaxNumber"),((Phone*)phones->get(i))->getType()))
vp->addParameter(TEXT("TYPE"), TEXT("FAX"));
if(!wcscmp(TEXT("HomeFaxNumber"),((Phone*)phones->get(i))->getType()))
vp->addParameter(TEXT("TYPE"), TEXT("HOME,FAX"));
insertProperty(vp);
}
}
} //end contactDetail
if(personalDetail->getPhoto()) {
VProperty* vp = getVPropertyFromProperty(TEXT("PHOTO"), personalDetail->getPhoto());
insertProperty(vp);
}
if(personalDetail->getBirthday()) {
VProperty* vp = new VProperty(TEXT("BDAY"), personalDetail->getBirthday());
insertProperty(vp);
}
}
}
void Contact::setUID (WCHAR* u) {
if (containsProperty(TEXT("UID")))
getProperty(TEXT("UID"))->setValue(u);
else
insertProperty(new VProperty(TEXT("UID"),u));
}
void Contact::setTimezone (WCHAR* tz) {
if (containsProperty(TEXT("TZ")))
getProperty(TEXT("TZ"))->setValue(tz);
else
insertProperty(new VProperty(TEXT("TZ"),tz));
}
void Contact::setRevision (WCHAR* r) {
if (containsProperty(TEXT("REV")))
getProperty(TEXT("REV"))->setValue(r);
else
insertProperty(new VProperty(TEXT("REV"),r));
}
void Contact::set(WCHAR** p, WCHAR* v) {
if(*p)
delete *p;
*p = wstrdup(v);
}
vCardProperty* Contact::getPropertyFromVProperty(VProperty* vp) {
if(vp) {
vCardProperty *prop = new vCardProperty(vp->getValue());
if(vp->getParameterValue(TEXT("ENCODING")))
prop->setEncoding(vp->getParameterValue(TEXT("ENCODING")));
if(vp->containsParameter(TEXT("BASE64")))
prop->setEncoding(TEXT("BASE64"));
if(vp->containsParameter(TEXT("QUOTED-PRINTABLE")))
prop->setEncoding(TEXT("QUOTED-PRINTABLE"));
if(vp->getParameterValue(TEXT("LANGUAGE")))
prop->setLanguage(vp->getParameterValue(TEXT("LANGUAGE")));
if(vp->getParameterValue(TEXT("CHARSET")))
prop->setCharset(vp->getParameterValue(TEXT("CHARSET")));
return prop;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -