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

📄 contact.cpp

📁 funambol windows mobile plugin source code, the source code is taken from the funambol site
💻 CPP
📖 第 1 页 / 共 4 页
字号:
    }

    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 + -