⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 contact.cpp

📁 funambol windows mobile plugin source code, the source code is taken from the funambol site
💻 CPP
📖 第 1 页 / 共 4 页
字号:
                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 + -