contactbuilder.cpp

来自「funambol window mobile客户端源代码」· C++ 代码 · 共 1,190 行 · 第 1/3 页

CPP
1,190
字号
        if (valueA) { delete [] valueA;}
    }

    else {
        // Delete existing image (set stream size to 0)
        hr = pContact->OpenProperty(PIMPR_PICTURE, GENERIC_READ|GENERIC_WRITE, &pStream);
        if (pStream && SUCCEEDED(hr)) {
            ULARGE_INTEGER size;
            size.HighPart = size.LowPart = 0;
            hr = pStream->SetSize(size);

            hr = pStream->Commit(STGC_DEFAULT);
            pStream->Release();
        }
    }

    hr = S_OK;

finally:
    if (prgPropvalPoom) {
        delete [] prgPropvalPoom;
    }
    return hr;
}



/*
 * Encode the message in base64, splitting the result in lines of 72 columns
 * each.
 */
char* encodeWithSpaces(const char *msg, int len)
{
    int i, step=54, dlen=0;

    char* res = new char[len*3]; // b64 is 4/3, but we have also the newlines....
    memset(res, 0, len*3);
    res[0] = ' ';
    res[1] = ' ';
    res[2] = ' ';
    res[3] = ' ';
    char* ret = &res[4];
    for(i=0; i<len; i+=step) {
        if(len-i < step) {
            step = len-i;
        }
        dlen += b64_encode(ret+dlen, (void *)(msg+i), step);
        ret[dlen++]='\r';
        ret[dlen++]='\n';
        ret[dlen++]=' ';
        ret[dlen++]=' ';
        ret[dlen++]=' ';
        ret[dlen++]=' ';
    }

    // Terminate the string
    ret[dlen]=0;
    int ll = strlen(res);
    return res;
}
char* loadFromFileAndConvert(const char *filename, const char *encoding)
{
    char *msg = 0;
    bool binary = true;
    size_t msglen=0;
    char *ret = 0;

    if(!filename)
        return 0;

    if( strcmp(encoding, "base64") == 0 ) {
        binary = true;
    }

    // Read file
    if(!readFile(filename, &msg, &msglen, binary))
        return 0;
    // Encode the file
    if( strcmp(encoding, "base64") == 0 ) {
        ret = encodeWithSpaces(msg, msglen);
        delete [] msg;
    }
    return ret;
}


ArrayList* getContactProperties(){

    int i = 0;
    ArrayList* props = new ArrayList();

    while (contactFields[i]){
        Property prop;
        char* field = toMultibyte(contactFields[i]);
        prop.setPropName(field);
        props->add(prop);
        
        delete [] field;

        i++;
    }

    return props;
}

ArrayList* getVCardProperties(){

    ArrayList* props = new ArrayList();
    Property* p = new Property();
    PropParam* pp = new PropParam();
    ArrayList pparams;
    ArrayList valenums;
    StringBuffer val;


    p->setPropName("BEGIN");
    val = "VCARD";
    valenums.add(val);
    p->setValEnums(&valenums);
    props->add(*p);

    valenums.clear();

    p->setPropName("END");
    val = "VCARD";
    valenums.add(val);
    p->setValEnums(&valenums);
    props->add(*p);

    valenums.clear();
    
    p->setPropName("VERSION");
    val = "2.1";
    valenums.add(val);
    p->setValEnums(&valenums);
    props->add(*p);

    p->setPropName("X-FUNAMBOL-ANNIVERSARY");
    props->add(*p);
    
    p->setPropName("BDAY");
    props->add(*p);
    
    p->setPropName("NOTE");
    props->add(*p);
    
    p->setPropName("TEL");
    pp->setParamName("VOICE");
    pparams.add(*pp);
    pp->setParamName("WORK");
    pparams.add(*pp);
    p->setPropParams(&pparams);
    props->add(*p);

    pparams.clear();
    delete p; p = NULL;
    delete pp; pp = NULL;
    p = new Property();
    pp = new PropParam();

    p->setPropName("ADR");
    pp->setParamName("WORK");
    pparams.add(*pp);
    p->setPropParams(&pparams);
    props->add(*p);

    pparams.clear();
    delete p; p = NULL;
    delete pp; pp = NULL;
    p = new Property();
    pp = new PropParam();

    p->setPropName("TEL");
    pp->setParamName("WORK");
    pparams.add(*pp);
    pp->setParamName("FAX");
    pparams.add(*pp);
    p->setPropParams(&pparams);
    props->add(*p);

    pparams.clear();
    delete p; p = NULL;
    delete pp; pp = NULL;
    p = new Property();
    pp = new PropParam();

    p->setPropName("TEL");
    pp->setParamName("CAR");
    pparams.add(*pp);
    pp->setParamName("VOICE");
    pparams.add(*pp);
    p->setPropParams(&pparams);
    props->add(*p);

    pparams.clear();
    delete p; p = NULL;
    delete pp; pp = NULL;
    p = new Property();
    pp = new PropParam();

    p->setPropName("CATEGORIES");
    props->add(*p);

    p->setPropName("X-FUNAMBOL-CHILDREN");
    props->add(*p);

    p->setPropName("TEL");
    pp->setParamName("WORK");
    pparams.add(*pp);
    pp->setParamName("PREF");
    pparams.add(*pp);
    p->setPropParams(&pparams);
    props->add(*p);

    pparams.clear();
    delete p; p = NULL;
    delete pp; pp = NULL;
    p = new Property();
    pp = new PropParam();

    p->setPropName("ORG");
    props->add(*p);

    p->setPropName("X-FUNAMBOL-CUSTOMERID");
    props->add(*p);

    p->setPropName("EMAIL");
    pp->setParamName("INTERNET");
    pparams.add(*pp);
    p->setPropParams(&pparams);
    props->add(*p);

    pparams.clear();
    delete p; p = NULL;
    delete pp; pp = NULL;
    p = new Property();
    pp = new PropParam();

    p->setPropName("EMAIL");
    pp->setParamName("INTERNET");
    pparams.add(*pp);
    pp->setParamName("HOME");
    pparams.add(*pp);
    p->setPropParams(&pparams);
    props->add(*p);

    pparams.clear();
    delete p; p = NULL;
    delete pp; pp = NULL;
    p = new Property();
    pp = new PropParam();

    p->setPropName("EMAIL");
    pp->setParamName("INTERNET");
    pparams.add(*pp);
    pp->setParamName("WORK");
    pparams.add(*pp);
    p->setPropParams(&pparams);
    props->add(*p);

    pparams.clear();
    delete p; p = NULL;
    delete pp; pp = NULL;
    p = new Property();
    pp = new PropParam();

    p->setPropName("ADR");
    pp->setParamName("HOME");
    pparams.add(*pp);
    p->setPropParams(&pparams);
    props->add(*p);

    pparams.clear();
    delete p; p = NULL;
    delete pp; pp = NULL;
    p = new Property();
    pp = new PropParam();

    p->setPropName("TEL");
    pp->setParamName("HOME");
    pparams.add(*pp);
    pp->setParamName("FAX");
    pparams.add(*pp);
    p->setPropParams(&pparams);
    props->add(*p);

    pparams.clear();
    delete p; p = NULL;
    delete pp; pp = NULL;
    p = new Property();
    pp = new PropParam();

    p->setPropName("TEL");
    pp->setParamName("VOICE");
    pparams.add(*pp);
    pp->setParamName("HOME");
    pparams.add(*pp);
    p->setPropParams(&pparams);
    props->add(*p);

    pparams.clear();
    delete p; p = NULL;
    delete pp; pp = NULL;
    p = new Property();
    pp = new PropParam();

    p->setPropName("EMAIL");
    pp->setParamName("INTERNET");
    pparams.add(*pp);
    pp->setParamName("HOME");
    pparams.add(*pp);
    pp->setParamName("X-FUNAMBOL-INSTANTMESSENGER");
    pparams.add(*pp);
    p->setPropParams(&pparams);
    props->add(*p);

    pparams.clear();
    delete p; p = NULL;
    delete pp; pp = NULL;
    p = new Property();
    pp = new PropParam();

    p->setPropName("TITLE");
    props->add(*p);

    p->setPropName("N");
    props->add(*p);

    p->setPropName("X-FUNAMBOL-MANAGER");
    props->add(*p);

    p->setPropName("TEL");
    pp->setParamName("CELL");
    pparams.add(*pp);
    p->setPropParams(&pparams);
    props->add(*p);

    pparams.clear();
    delete p; p = NULL;
    delete pp; pp = NULL;
    p = new Property();
    pp = new PropParam();

    p->setPropName("NICKNAME");
    props->add(*p);

    p->setPropName("ADR");
    props->add(*p);

    p->setPropName("TEL");
    pp->setParamName("PAGER");
    pparams.add(*pp);
    p->setPropParams(&pparams);
    props->add(*p);

    pparams.clear();
    delete p; p = NULL;
    delete pp; pp = NULL;
    p = new Property();
    pp = new PropParam();

    p->setPropName("PHOTO");
    props->add(*p);

    p->setPropName("TEL");
    pp->setParamName("X-FUNAMBOL-RADIO");
    pparams.add(*pp);
    p->setPropParams(&pparams);
    props->add(*p);

    pparams.clear();
    delete p; p = NULL;
    delete pp; pp = NULL;
    p = new Property();
    pp = new PropParam();

    p->setPropName("X-FUNAMBOL-SPOUSE");
    props->add(*p);

    p->setPropName("URL");
    props->add(*p);

    p->setPropName("X-FUNAMBOL-YOMICOMPANYNAME");
    props->add(*p);

    p->setPropName("X-FUNAMBOL-YOMIFIRSTNAME");
    props->add(*p);

    p->setPropName("X-FUNAMBOL-YOMILASTNAME");
    props->add(*p);

    delete p; p = NULL;
    delete pp; pp = NULL;

    return props;
}

⌨️ 快捷键说明

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