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

📄 contactbuilder.cpp

📁 funambol windows mobile plugin source code, the source code is taken from the funambol site
💻 CPP
📖 第 1 页 / 共 5 页
字号:
            convertNewlines(dummyEvent_s); // BUG #1562
            pContact->put_BusinessAddressStreet ((wchar_t*)dummyEvent_s.data());
            delete [] dummyEvent;dummyEvent=NULL;
        }

        dummyEvent = getElementContent(ptrData, TEXT ("BusinessAddressCity"), NULL);
        if (dummyEvent != NULL) {
            dummyEvent_s = wstring(dummyEvent); decodeSpecialChar(dummyEvent_s);
            pContact->put_BusinessAddressCity ((wchar_t*)dummyEvent_s.data());
            delete [] dummyEvent;dummyEvent=NULL;
        }

        dummyEvent = getElementContent(ptrData, TEXT ("BusinessAddressState"), NULL);
        if (dummyEvent != NULL) {
            dummyEvent_s = wstring(dummyEvent); decodeSpecialChar(dummyEvent_s);
            pContact->put_BusinessAddressState ((wchar_t*)dummyEvent_s.data());
            delete [] dummyEvent;dummyEvent=NULL;
        }

        dummyEvent = getElementContent(ptrData, TEXT ("BusinessAddressPostalCode"), NULL);
        if (dummyEvent != NULL) {
            dummyEvent_s = wstring(dummyEvent); decodeSpecialChar(dummyEvent_s);
            pContact->put_BusinessAddressPostalCode ((wchar_t*)dummyEvent_s.data());
            delete [] dummyEvent;
        }

        dummyEvent = getElementContent(ptrData, TEXT ("BusinessAddressCountry"), NULL);
        if (dummyEvent != NULL) {
            dummyEvent_s = wstring(dummyEvent); decodeSpecialChar(dummyEvent_s);
            pContact->put_BusinessAddressCountry ((wchar_t*)dummyEvent_s.data());
            delete [] dummyEvent;dummyEvent=NULL;
        }

        dummyEvent = getElementContent(ptrData, TEXT ("Body"), NULL);
        if (dummyEvent != NULL) {
            dummyEvent_s = wstring(dummyEvent); decodeSpecialChar(dummyEvent_s);
            convertNewlines(dummyEvent_s); // BUG #1562
            pContact->put_Body ((wchar_t*)dummyEvent_s.data());
            delete [] dummyEvent;dummyEvent=NULL;
        }

        // tipo DATE
        dummyEvent = getElementContent(ptrData, TEXT ("Birthday"), NULL);
        if (dummyEvent == NULL || (wcscmp(dummyEvent, TEXT("")) == 0))
            pContact->put_Birthday(doubleDummy);
        else {
            DATE birth;
            //systemTimeToDouble(dummyEvent, &birth, NULL);
            systemTimeToDoubleBirthday(dummyEvent, &birth);
            wsprintf(localTemp, TEXT("%f"), birth);

            pContact->put_Birthday(birth);
            delete [] dummyEvent;
        }
        if (dummyEvent) {delete [] dummyEvent; dummyEvent = NULL; }

        dummyEvent = getElementContent(ptrData, TEXT ("Anniversary"), NULL);
        if (dummyEvent == NULL || (wcscmp(dummyEvent, TEXT("")) == 0))
            pContact->put_Anniversary(doubleDummy);
        else {

            DATE anny;
            //systemTimeToDouble(dummyEvent, &anny, NULL);
            systemTimeToDoubleBirthday(dummyEvent, &anny);
            pContact->put_Anniversary(anny);
            delete [] dummyEvent;
        }
        if (dummyEvent) {delete [] dummyEvent; dummyEvent = NULL; }

}

/*
* The method calculate the CRC hash value for the contact item.
* It create the XML structure and calculate the crc value.
* Use to compare for understand the modified value!
*
* @param pContact : the contact object that contain every value
*/

long calculateContactHash (IContact* pContact) {

    wstring p;

    populateContactStringItem(p, pContact);
    long l = stringCrc32(p.data());

    p.clear();
    return l;

}
VObject* ContactToVObject(IContact *pContact) {

    VObject* vo = new VObject();
    VProperty* vp    = NULL;
    bool value_found = false;

    vp = new VProperty(TEXT("BEGIN"), TEXT("VCARD"));
    vo->addProperty(vp);
    delete vp; vp = NULL;

    vp = new VProperty(TEXT("VERSION"), TEXT("2.1"));
    vo->addProperty(vp);
    delete vp; vp = NULL;


    BSTR element = NULL;
    DATE date = NULL;

    // ------- Name -------
    vp = new VProperty(TEXT("N"));

    pContact->get_LastName(&element);
    vp->addValue(element);

    pContact->get_FirstName(&element);
    vp->addValue(element);

    pContact->get_MiddleName(&element);
    vp->addValue(element);

    pContact->get_Title(&element);
    vp->addValue(element);

   pContact->get_Suffix(&element);
    vp->addValue(element);

    vo->addProperty(vp);
    delete vp; vp = NULL;


    // Formatted Name FN = <FileAs>
    pContact->get_FileAs(&element);
    if(wcscmp(element, TEXT(""))) {
        vp = new VProperty(TEXT("FN"), element);
        vo->addProperty(vp);
        delete vp; vp = NULL;
    }


// END NAME

    wchar_t tempDate[50];
    wsprintf(tempDate, TEXT(""));

    double toCompare = MAX_DATE_DOUBLE;

    pContact->get_Birthday(&date);
    if(date) {
        if (date != toCompare) { // MAX_DATE_DOUBLE is set to 949999.00000, the nonsense value when in ppc date is not set...
            doubleToSystemTimeBirthday(tempDate, date);
        }
        vp = new VProperty(TEXT("BDAY"), tempDate);
        vo->addProperty(vp);
        delete vp; vp = NULL;
    }

    //Anniversary has no corespondent in the VCARD

    pContact->get_BusinessFaxNumber(&element);
    if(wcscmp(element, TEXT(""))) {
        vp = new VProperty(TEXT("TEL"), element);
        vp->addParameter(TEXT("WORK"), NULL);
        vp->addParameter(TEXT("FAX"), NULL);
        vo->addProperty(vp);
        delete vp; vp = NULL;
    }

    pContact->get_CompanyName(&element);
    if(wcscmp(element, TEXT(""))) {
        vp = new VProperty(TEXT("ORG"), element);
        vo->addProperty(vp);
        delete vp; vp = NULL;
    }

    //Department has no corespondent in the VCARD

    pContact->get_Email1Address(&element);
    if(wcscmp(element, TEXT(""))) {
        vp = new VProperty(TEXT("EMAIL"), element);
        vp->addParameter(TEXT("INTERNET"), NULL);
        vo->addProperty(vp);
        delete vp; vp = NULL;
    }

    pContact->get_Email2Address(&element);
    if(wcscmp(element, TEXT(""))) {
        vp = new VProperty(TEXT("EMAIL"), element);
        vp->addParameter(TEXT("INTERNET"), NULL);
        vp->addParameter(TEXT("HOME"), NULL);
        vo->addProperty(vp);
        delete vp; vp = NULL;
    }

    pContact->get_Email3Address(&element);
    if(wcscmp(element, TEXT(""))) {
        vp = new VProperty(TEXT("EMAIL"), element);
        vp->addParameter(TEXT("INTERNET"), NULL);
        vp->addParameter(TEXT("WORK"), NULL);
        vo->addProperty(vp);
        delete vp; vp = NULL;

    }

    pContact->get_MobileTelephoneNumber(&element);
    if(wcscmp(element, TEXT(""))) {
        vp = new VProperty(TEXT("TEL"), element);
        vp->addParameter(TEXT("CELL"), NULL);
        vo->addProperty(vp);
        delete vp; vp = NULL;

    }

    //OfficeLocation has no corespondent in the VCARD

    pContact->get_PagerNumber(&element);
    if(wcscmp(element, TEXT(""))) {
        vp = new VProperty(TEXT("TEL"), element);
        vp->addParameter(TEXT("PAGER"), NULL);
        vo->addProperty(vp);
        delete vp; vp = NULL;

    }

    pContact->get_BusinessTelephoneNumber(&element);
    if(wcscmp(element, TEXT(""))) {
        vp = new VProperty(TEXT("TEL"), element);
        vp->addParameter(TEXT("WORK"), NULL);
        vo->addProperty(vp);
        delete vp; vp = NULL;
    }

    pContact->get_JobTitle(&element);
    if(wcscmp(element, TEXT(""))) {
        vp = new VProperty(TEXT("TITLE"), element);
        vo->addProperty(vp);
        delete vp; vp = NULL;
    }

    pContact->get_HomeTelephoneNumber(&element);
    if(wcscmp(element, TEXT(""))) {
        vp = new VProperty(TEXT("TEL"), element);
        vp->addParameter(TEXT("HOME"), NULL);
        vo->addProperty(vp);
        delete vp; vp = NULL;
    }

    //Spouse has no corespondent in the VCARD

    pContact->get_Home2TelephoneNumber(&element);
    if(wcscmp(element, TEXT(""))) {
        vp = new VProperty(TEXT("TEL"), element);
        vp->addParameter(TEXT("HOME"), NULL);
        vo->addProperty(vp);
        delete vp; vp = NULL;
    }

    pContact->get_CarTelephoneNumber(&element);
    if(wcscmp(element, TEXT(""))) {
        vp = new VProperty(TEXT("TEL"), element);
        vp->addParameter(TEXT("CAR"), NULL);
        vo->addProperty(vp);
        delete vp; vp = NULL;
    }

    pContact->get_HomeFaxNumber(&element);
    if(wcscmp(element, TEXT(""))) {
        vp = new VProperty(TEXT("TEL"), element);
        vp->addParameter(TEXT("HOME"), NULL);
        vp->addParameter(TEXT("FAX"), NULL);
        vo->addProperty(vp);
        delete vp; vp = NULL;
    }

    //get_AssistantName X
    //get_AssistantTelephoneNumber X

    //Children has no corespondent in the VCARD

    pContact->get_Categories(&element);
    if(wcscmp(element, TEXT(""))) {
        vp = new VProperty(TEXT("CATEGORIES"), element);
        vo->addProperty(vp);
        delete vp; vp = NULL;
    }

    pContact->get_WebPage(&element);
    if(wcscmp(element, TEXT(""))) {
        vp = new VProperty(TEXT("URL"), element);
        vo->addProperty(vp);
        delete vp; vp = NULL;
    }

    pContact->get_Business2TelephoneNumber(&element);
    if(wcscmp(element, TEXT(""))) {
        vp = new VProperty(TEXT("TEL"), element);
        vp->addParameter(TEXT("WORK"), NULL);
        vo->addProperty(vp);
        delete vp; vp = NULL;
    }

    //RadioTelephoneNumber has no corespondent in the VCARD

    //Yomi properties have no corespondent in the VCARD

        // ----- Address HOME -----

    vp = new VProperty(TEXT("ADR"));
    vp->addParameter(TEXT("HOME"), NULL);
    value_found = false;

    // First two values are empty:
    // "Post Office Address" and "Extended Address" not present in SIF
    vp->addValue(TEXT(""));
    vp->addValue(TEXT(""));

    pContact->get_HomeAddressStreet(&element);
    if(wcscmp(element, TEXT("")))
        value_found = true;
    vp->addValue(element);


    pContact->get_HomeAddressCity(&element);
    if(wcscmp(element, TEXT("")))
        value_found = true;
    vp->addValue(element);


    pContact->get_HomeAddressState(&element);
    if(wcscmp(element, TEXT("")))
        value_found = true;
    vp->addValue(element);


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -