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

📄 contactbuilder.cpp

📁 funambol windows mobile plugin source code, the source code is taken from the funambol site
💻 CPP
📖 第 1 页 / 共 5 页
字号:
    pContact->get_HomeAddressPostalCode(&element);
    if(wcscmp(element, TEXT("")))
        value_found = true;
    vp->addValue(element);


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


    if(value_found) {
        vo->addProperty(vp);
    }
    delete vp; vp = NULL;


    // END ADDRESS HOME

    vp = new VProperty(TEXT("ADR"));
    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_OtherAddressStreet(&element);
    if(wcscmp(element, TEXT("")))
        value_found = true;
    vp->addValue(element);


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


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


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


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


    if(value_found) {
        vo->addProperty(vp);
    }
    delete vp; vp = NULL;

    // END OTHER

    vp = new VProperty(TEXT("ADR"));
    vp->addParameter(TEXT("WORK"), 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_BusinessAddressStreet(&element);
    if(wcscmp(element, TEXT("")))
        value_found = true;
    vp->addValue(element);


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


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


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


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


    if(value_found) {
        vo->addProperty(vp);
    }
    delete vp; vp = NULL;

   // END BUSINESS

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

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

    return vo;

}

void VObjectToContact(IContact *pContact, VObject *vo) {

    int businessTel = 0;
    int homeTel        = 0;
    int email        = 0;

    wchar_t* name    = NULL;
    wchar_t* element = NULL;

    for(int i = 0; i < vo->propertiesCount(); i++) {

        name    = vo->getProperty(i)->getName();
        element = vo->getProperty(i)->getValue(0);

        if(!wcscmp(name, TEXT("N"))) {
            if(vo->getProperty(i)->getPropComponent(1))
                pContact->put_LastName(vo->getProperty(i)->getPropComponent(1));
            if(vo->getProperty(i)->getPropComponent(2))
                pContact->put_FirstName(vo->getProperty(i)->getPropComponent(2));
            if(vo->getProperty(i)->getPropComponent(3))
                pContact->put_MiddleName(vo->getProperty(i)->getPropComponent(3));
            if(vo->getProperty(i)->getPropComponent(4))
                pContact->put_Title(vo->getProperty(i)->getPropComponent(4));
            if(vo->getProperty(i)->getPropComponent(5))
                pContact->put_Suffix(vo->getProperty(i)->getPropComponent(5));
        }
        else if(!wcscmp(name, TEXT("FN"))) {
            pContact->put_FileAs(element);
        }
        else if(!wcscmp(name, TEXT("BDAY"))) {
            DATE birth;
            systemTimeToDoubleBirthday(element, &birth);
            pContact->put_Birthday(birth);
        }

        else if(!wcscmp(name, TEXT("TEL")) &&
                vo->getProperty(i)->containsParameter(TEXT("WORK"))) {
            if (vo->getProperty(i)->containsParameter(TEXT("FAX")))
                pContact->put_BusinessFaxNumber(element);
            else if (vo->getProperty(i)->containsParameter(TEXT("CELL")))
                ;
            else {
                if(businessTel == 0) {
                    pContact->put_BusinessTelephoneNumber(element);
                    businessTel++;
                }
                else {
                    pContact->put_Business2TelephoneNumber(element);
                }
            }
        }

        else if(!wcscmp(name, TEXT("ORG")))
            pContact->put_CompanyName(element);

        else if(!wcscmp(name, TEXT("EMAIL"))) {

            if (vo->getProperty(i)->containsParameter(L"HOME"))  {
                pContact->put_Email2Address(element);
            } else if (vo->getProperty(i)->containsParameter(L"WORK"))  {
                pContact->put_Email3Address(element);
            } else {
                pContact->put_Email1Address(element);
            }
            /*
            if(email == 0) {
                pContact->put_Email1Address(element);
                email++;
            }
            else if(email == 1) {
                email++;
                pContact->put_Email2Address(element);
            }
            else
                pContact->put_Email3Address(element);
            */
        }

        else if(!wcscmp(name, TEXT("TEL")) &&
            vo->getProperty(i)->containsParameter(TEXT("CELL")))
            pContact->put_MobileTelephoneNumber(element);

        else if(!wcscmp(name, TEXT("TEL")) &&
            vo->getProperty(i)->containsParameter(TEXT("PAGER")))
            pContact->put_PagerNumber(element);

        else if(!wcscmp(name, TEXT("TITLE")))
            pContact->put_JobTitle(element);

        else if(!wcscmp(name, TEXT("TEL")) &&
            vo->getProperty(i)->containsParameter(TEXT("HOME"))) {
            if(vo->getProperty(i)->containsParameter(TEXT("FAX")))
                pContact->put_HomeFaxNumber(element);
            else if(vo->getProperty(i)->containsParameter(TEXT("CELL")))
                ;
            else if(homeTel == 0) {
                pContact->put_HomeTelephoneNumber(element);
                homeTel++;
                }
            else {
                pContact->put_Home2TelephoneNumber(element);
            }
        }

        else if(!wcscmp(name, TEXT("TEL")) &&
            vo->getProperty(i)->containsParameter(TEXT("CAR")))
            pContact->put_CarTelephoneNumber(element);

        else if(!wcscmp(name, TEXT("CATEGORIES")))
            pContact->put_Categories(element);

        else if(!wcscmp(name, TEXT("URL")))
            pContact->put_WebPage(element);

        else if(!wcscmp(name, TEXT("NOTE")))
            pContact->put_Body(element);

        else if(!wcscmp(name, TEXT("ADR"))) {
            if(vo->getProperty(i)->containsParameter(TEXT("HOME"))) {
                if(vo->getProperty(i)->getPropComponent(3))
                    pContact->put_HomeAddressStreet(vo->getProperty(i)->getPropComponent(3));
                if(vo->getProperty(i)->getPropComponent(4))
                    pContact->put_HomeAddressCity(vo->getProperty(i)->getPropComponent(4));
                if(vo->getProperty(i)->getPropComponent(5))
                    pContact->put_HomeAddressState(vo->getProperty(i)->getPropComponent(5));
                if(vo->getProperty(i)->getPropComponent(6))
                    pContact->put_HomeAddressPostalCode(vo->getProperty(i)->getPropComponent(6));
                if(vo->getProperty(i)->getPropComponent(7))
                    pContact->put_HomeAddressCountry(vo->getProperty(i)->getPropComponent(7));
            }
            else if(vo->getProperty(i)->containsParameter(TEXT("WORK"))) {
                if(vo->getProperty(i)->getPropComponent(3))
                    pContact->put_BusinessAddressStreet(vo->getProperty(i)->getPropComponent(3));
                if(vo->getProperty(i)->getPropComponent(4))
                    pContact->put_BusinessAddressCity(vo->getProperty(i)->getPropComponent(4));
                if(vo->getProperty(i)->getPropComponent(5))
                    pContact->put_BusinessAddressState(vo->getProperty(i)->getPropComponent(5));
                if(vo->getProperty(i)->getPropComponent(6))
                    pContact->put_BusinessAddressPostalCode(vo->getProperty(i)->getPropComponent(6));
                if(vo->getProperty(i)->getPropComponent(7))
                    pContact->put_BusinessAddressCountry(vo->getProperty(i)->getPropComponent(7));
            }
            else {
                if(vo->getProperty(i)->getPropComponent(3))
                    pContact->put_OtherAddressStreet(vo->getProperty(i)->getPropComponent(3));
                if(vo->getProperty(i)->getPropComponent(4))
                    pContact->put_OtherAddressCity(vo->getProperty(i)->getPropComponent(4));
                if(vo->getProperty(i)->getPropComponent(5))
                    pContact->put_OtherAddressState(vo->getProperty(i)->getPropComponent(5));
                if(vo->getProperty(i)->getPropComponent(6))
                    pContact->put_OtherAddressPostalCode(vo->getProperty(i)->getPropComponent(6));
                if(vo->getProperty(i)->getPropComponent(7))
                    pContact->put_OtherAddressCountry(vo->getProperty(i)->getPropComponent(7));
            }
        }
    }
}



/*
* For Windows Mobile 5: use the newer interfaces to set/get properties
* that cannot be retrieved with the usual IContact interface
*/
#if _WIN32_WCE > 0x500 

#define WSTRING_NULL TEXT("__@_N_U_L_L___")
wstring getStringPropertyFromMapi(CEPROPVAL *pValSrc) {
    
    /* At the moment all the properties will be filled */
    wstring value = L"";
    if (!(pValSrc->wFlags & CEDB_PROPNOTFOUND)) {
        value = pValSrc->val.lpwstr;
    }
    return value;    
    
    /*
    This piece of code will be fine when the DevInfo is
    proper handled by the client and the server.
    When the client will send its capability, it can
    send only the field that are filled. The server will
    erase the other that doesn't receive

    if (!(pValSrc->wFlags & CEDB_PROPNOTFOUND)) {
        wstring value(pValSrc->val.lpwstr);        
        return value;
    } else {
        return WSTRING_NULL;
    } 
    */
}

wstring getDatePropertyFromMapi(CEPROPVAL *pValSrc) {
    
    wchar_t tempDate[50];
    wsprintf(tempDate, TEXT(""));
    
    wstring value = L"";
    if (!(pValSrc->wFlags & CEDB_PROPNOTFOUND)) {
        SYSTEMTIME t;
        FILETIME d = pValSrc->val.filetime;       
        FileTimeToSystemTime(&d, &t);
        wchar_t tempDate[50];
        wsprintf(tempDate, TEXT("%04d%02d%02d"), t.wYear, t.wMonth, t.wDay);
        value = tempDate;       
        return value;
    }

⌨️ 快捷键说明

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