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

📄 pim_main.c

📁 java 1.1 gemini 08_16
💻 C
📖 第 1 页 / 共 3 页
字号:
    pim_initCategories();

    return pim_getContactField(dbhandle);
}

/*****************************************************************************
 * FUNCTION
 *  pim_initContact
 * DESCRIPTION
 *  initial context of pim
 * PARAMETERS
 *  void
 * RETURNS
 *****************************************************************************/
static kal_int32 pim_initEvent(kal_int32 dbhandle)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/

    pim_cntx.event.index = 0xFF;
    pim_cntx.event.handle = 0xFF;

    edbh = nEvent = -1;

    return pim_getEventField(dbhandle);
}

/*****************************************************************************
 * FUNCTION
 *  Java_com_ibm_oti_pim_PIMImpl_listPIMListsN2
 * DESCRIPTION
 *  private native int listPIMListsN2(int pimListType, String[] ret);
 * PARAMETERS
 *  void
 * RETURNS
 *****************************************************************************/
KNIEXPORT KNI_RETURNTYPE_INT
Java_com_ibm_oti_pim_PIMImpl_listPIMListsN2(void)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    kal_wchar *name;
    kal_int32 result = 0;
    kal_bool getsize;
    kal_int32 pimListType = KNI_GetParameterAsInt(1);

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/

    KNI_StartHandles(1);
    KNI_DeclareHandle(str_array);
    KNI_GetParameterAsObject(2, str_array);
    getsize = KNI_IsNullHandle(str_array);
    KNI_EndHandles();

    JPIM_DEBUG_1(TRACE_FUNC, FUNC_J2ME_PIMIMPL_LISTPIMLISTSN2, getsize);

    if (getsize)
    {
        result = 0;
        switch (pimListType)
        {
            case CONTACT_LIST:
#ifndef JSR75_PIM_MULTI_PHB_DB
                result = 1; /*  platform dependent */
#else
    #ifdef __MMI_DUAL_SIM_MASTER__
                result = 3;
    #else
                result = 2; /*  platform dependent */
    #endif
#endif
                break;
            case EVENT_LIST:
#ifndef JSR75_PIM_MULTI_EVT_DB
                result = 1; /*  platform dependent */
#else
                result = 6;
#endif
                break;
            case TODO_LIST:
                result = 0;
                break;
            default:
                PIM_THROW(ILLARG, "", GENERAL_ERROR);
        }

        KNI_ReturnInt(result);
    }

    /* get name */
    KNI_StartHandles(2);
    KNI_DeclareHandle(str);
    KNI_DeclareHandle(str_array);
    KNI_GetParameterAsObject(2, str_array);

    switch (pimListType)
    {
        case CONTACT_LIST:
#ifndef JSR75_PIM_MULTI_PHB_DB
            ASSERT(KNI_GetArrayLength(str_array) >= 1);
            name = jpim_phb_getName(JPIM_PHB_STORAGE_BOTH);
            KNI_NewString((const jchar*)name, (jsize) app_ucs2_strlen((kal_int8*)name), str);
            KNI_SetObjectArrayElement(str_array, 0, str);
#else
            ASSERT(KNI_GetArrayLength(str_array) >= 2);
    #ifdef __MMI_DUAL_SIM_MASTER__
            name = jpim_phb_getName(JPIM_PHB_SIM2);
            KNI_NewString((const jchar*)name, (jsize) app_ucs2_strlen((kal_int8*)name), str);
            KNI_SetObjectArrayElement(str_array, 2, str);
    #endif
            name = jpim_phb_getName(JPIM_PHB_SIM);
            KNI_NewString((const jchar*)name, (jsize) app_ucs2_strlen((kal_int8*)name), str);
            KNI_SetObjectArrayElement(str_array, 1, str);
            name = jpim_phb_getName(JPIM_PHB_NVRAM);
            KNI_NewString((const jchar*)name, (jsize) app_ucs2_strlen((kal_int8*)name), str);
            KNI_SetObjectArrayElement(str_array, 0, str);
#endif
            break;
        case EVENT_LIST:
#ifndef JSR75_PIM_MULTI_EVT_DB
            ASSERT(KNI_GetArrayLength(str_array) >= 1);
            name = jpim_evtdb_getName(JPIM_EVTDB_ALL);
            KNI_NewString((const jchar*)name, (jsize) app_ucs2_strlen((kal_int8*)name), str);
            KNI_SetObjectArrayElement(str_array, 0, str);
#else
            ASSERT(KNI_GetArrayLength(str_array) >= 6);
            name = jpim_evtdb_getName(JPIM_EVTDB_REMINDER);
            KNI_NewString((const jchar*)name, (jsize) app_ucs2_strlen((kal_int8*)name), str);
            KNI_SetObjectArrayElement(str_array, 0, str);
            name = jpim_evtdb_getName(JPIM_EVTDB_MEETING);
            KNI_NewString((const jchar*)name, (jsize) app_ucs2_strlen((kal_int8*)name), str);
            KNI_SetObjectArrayElement(str_array, 1, str);
            name = jpim_evtdb_getName(JPIM_EVTDB_COURSE);
            KNI_NewString((const jchar*)name, (jsize) app_ucs2_strlen((kal_int8*)name), str);
            KNI_SetObjectArrayElement(str_array, 2, str);
            name = jpim_evtdb_getName(JPIM_EVTDB_DATE);
            KNI_NewString((const jchar*)name, (jsize) app_ucs2_strlen((kal_int8*)name), str);
            KNI_SetObjectArrayElement(str_array, 3, str);
            name = jpim_evtdb_getName(JPIM_EVTDB_CALL);
            KNI_NewString((const jchar*)name, (jsize) app_ucs2_strlen((kal_int8*)name), str);
            KNI_SetObjectArrayElement(str_array, 4, str);
            name = jpim_evtdb_getName(JPIM_EVTDB_ANNIVERSARY);
            KNI_NewString((const jchar*)name, (jsize) app_ucs2_strlen((kal_int8*)name), str);
            KNI_SetObjectArrayElement(str_array, 5, str);
#endif
            break;
        case TODO_LIST:
            PIM_THROW(PIM, "", FEATURE_NOT_SUPPORTED);
            break;
        default:
            PIM_THROW(ILLARG, "", GENERAL_ERROR);
    }
    KNI_EndHandles();
    KNI_ReturnInt(0);
}


/*****************************************************************************
 * FUNCTION
 *  Java_com_ibm_oti_pim_PIMImpl_openPIMListN
 * DESCRIPTION
 *  private native int openPIMListN(int pimListType, int mode, String name) throws PIMException;
 * PARAMETERS
 *  void
 * RETURNS
 *****************************************************************************/
KNIEXPORT KNI_RETURNTYPE_INT
Java_com_ibm_oti_pim_PIMImpl_openPIMListN(void)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    kal_char name[128];
    kal_int32 len;
    kal_int32 pimListType = KNI_GetParameterAsInt(1);

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    JPIM_DEBUG(TRACE_FUNC, FUNC_J2ME_PIMIMPL_OPENPIMLISTN);

    KNI_StartHandles(1);
    KNI_DeclareHandle(str);
    KNI_GetParameterAsObject(3, str);

    if ((len = KNI_GetStringLength(str)) < 0)
    {
        PIM_THROW(NULLP, "", GENERAL_ERROR);
    }
    if (len > 128)
    {
        len = 128;
    }
    KNI_GetStringRegion(str, 0, len, (jchar*) name);
    name[len << 1] = name[(len<<1) +1] = 0;
    KNI_EndHandles();

    switch (pimListType)
    {
        case CONTACT_LIST:
#ifndef JSR75_PIM_MULTI_PHB_DB
            if (app_ucs2_strcmp((kal_int8*)jpim_phb_getName(JPIM_PHB_STORAGE_BOTH), (kal_int8*)name) == 0)
            {
                pim_initContact(CONTACT_LIST_HANDLE_BASE+JPIM_PHB_STORAGE_BOTH);
                KNI_ReturnInt(CONTACT_LIST_HANDLE_BASE+JPIM_PHB_STORAGE_BOTH);
            }
#else
            if (app_ucs2_strcmp((kal_int8*)jpim_phb_getName(JPIM_PHB_SIM), (kal_int8*)name) == 0)
            {
                pim_initContact(CONTACT_LIST_HANDLE_BASE+JPIM_PHB_SIM);
                KNI_ReturnInt(CONTACT_LIST_HANDLE_BASE+JPIM_PHB_SIM);
            }
            else if (app_ucs2_strcmp((kal_int8*)jpim_phb_getName(JPIM_PHB_NVRAM), (kal_int8*)name) == 0)
            {
                pim_initContact(CONTACT_LIST_HANDLE_BASE+JPIM_PHB_NVRAM);
                KNI_ReturnInt(CONTACT_LIST_HANDLE_BASE+JPIM_PHB_NVRAM);
            }
    #ifdef __MMI_DUAL_SIM_MASTER__
            else if (app_ucs2_strcmp((kal_int8*)jpim_phb_getName(JPIM_PHB_SIM2), (kal_int8*)name) == 0)
            {
                pim_initContact(CONTACT_LIST_HANDLE_BASE+JPIM_PHB_SIM2);
                KNI_ReturnInt(CONTACT_LIST_HANDLE_BASE+JPIM_PHB_SIM2);
            }
    #endif
#endif
            else
            {
                PIM_THROW(PIM, "", GENERAL_ERROR);
            }
            break;
        case EVENT_LIST:
#ifndef JSR75_PIM_MULTI_EVT_DB
            if (app_ucs2_strcmp((kal_int8 *)jpim_evtdb_getName(JPIM_EVTDB_ALL), (kal_int8 *)name) == 0)
            {
                pim_initEvent(EVENT_LIST_HANDLE_BASE+JPIM_EVTDB_ALL);
                KNI_ReturnInt(EVENT_LIST_HANDLE_BASE+JPIM_EVTDB_ALL);
            }
#else
            if (app_ucs2_strcmp((kal_int8 *)jpim_evtdb_getName(JPIM_EVTDB_REMINDER), (kal_int8 *) == 0)
            {
                pim_initEvent(EVENT_LIST_HANDLE_BASE+JPIM_EVTDB_REMINDER);
                KNI_ReturnInt(EVENT_LIST_HANDLE_BASE+JPIM_EVTDB_REMINDER);
            }
            else if (app_ucs2_strcmp((kal_int8 *)jpim_evtdb_getName(JPIM_EVTDB_MEETING), (kal_int8 *)name) == 0)
            {
                pim_initEvent(EVENT_LIST_HANDLE_BASE+JPIM_EVTDB_MEETING);
                KNI_ReturnInt(EVENT_LIST_HANDLE_BASE+JPIM_EVTDB_MEETING);
            }
            else if (app_ucs2_strcmp((kal_int8 *)jpim_evtdb_getName(JPIM_EVTDB_COURSE), (kal_int8 *)name) == 0)
            {
                pim_initEvent(EVENT_LIST_HANDLE_BASE+JPIM_EVTDB_COURSE);
                KNI_ReturnInt(EVENT_LIST_HANDLE_BASE+JPIM_EVTDB_COURSE);
            }
            else if (app_ucs2_strcmp((kal_int8 *)jpim_evtdb_getName(JPIM_EVTDB_DATE), (kal_int8 *)name) == 0)
            {
                pim_initEvent(EVENT_LIST_HANDLE_BASE+JPIM_EVTDB_DATE);
                KNI_ReturnInt(EVENT_LIST_HANDLE_BASE+JPIM_EVTDB_DATE);
            }
            else if (app_ucs2_strcmp((kal_int8 *)jpim_evtdb_getName(JPIM_EVTDB_CALL), (kal_int8 *)name) == 0)
            {
                pim_initEvent(EVENT_LIST_HANDLE_BASE+JPIM_EVTDB_CALL);
                KNI_ReturnInt(EVENT_LIST_HANDLE_BASE+JPIM_EVTDB_CALL);
            }
            else if (app_ucs2_strcmp((kal_int8 *)jpim_evtdb_getName(JPIM_EVTDB_ANNIVERSARY), (kal_int8 *)name) == 0)
            {
                pim_initEvent(EVENT_LIST_HANDLE_BASE+JPIM_EVTDB_ANNIVERSARY);
                KNI_ReturnInt(EVENT_LIST_HANDLE_BASE+JPIM_EVTDB_ANNIVERSARY);
            }
#endif
            else
            {
                PIM_THROW(PIM, "", GENERAL_ERROR);
            }
            break;
        case TODO_LIST:
            PIM_THROW(PIM, "", FEATURE_NOT_SUPPORTED);
            break;
        default:
            PIM_THROW(ILLARG, "", GENERAL_ERROR);
    }
    KNI_ReturnInt(0);
}

/*****************************************************************************
 * FUNCTION
 *  Java_com_ibm_oti_pim_EncodingHelper_encodeQuotedPrintableN
 * DESCRIPTION
 *  encode string to quoted Printable
 * PARAMETERS
 * RETURNS
 *  void
 *****************************************************************************/
KNIEXPORT KNI_RETURNTYPE_OBJECT
Java_com_ibm_oti_pim_EncodingHelper_encodeQuotedPrintableN(void)
{

    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    kal_int32 len;
    kal_char *ucs2_src=NULL, *utf8_src=NULL,*ascii_dst=NULL, *ucs2_dst=NULL;
    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/

    KNI_StartHandles(1);
    KNI_DeclareHandle(str);
    KNI_GetParameterAsObject(1, str);

    len = KNI_GetStringLength(str);

    if (len < 0)
    {
        goto FAIL;
    }
    else
    {
        ucs2_src = midpMalloc( (len + 1) * 2 );
        utf8_src = midpMalloc( (len + 1) * 3 );
        /* due to qp coding will add 0d0a every 16 bytes */
        ascii_dst = midpMalloc( (len + 1 + 3) * 3 * 3  );
        ucs2_dst = midpMalloc( (len + 1 + 3) *3 * 3 * 2 );
        KNI_GetStringRegion(str, 0, len, (jchar*) ucs2_src);
        ucs2_src[len << 1] = ucs2_src[(len<<1) +1] = 0;
    }
    KNI_EndHandles();


    if(ucs2_src == NULL || utf8_src == NULL || ascii_dst == NULL || ucs2_dst == NULL)
    {
        goto FAIL;
    }

    if (mmi_chset_convert(MMI_CHSET_UCS2, MMI_CHSET_UTF8, ucs2_src, utf8_src, (len + 1) * 3 ) <= 0)
    {
        goto FAIL;
    }


    if(applib_qprint_encode_ext(utf8_src, strlen(utf8_src) , ascii_dst, (len + 4) *3 * 3 , TRUE) <= 0)
    {
        goto FAIL;
    }

    app_asc_str_to_ucs2_str((kal_int8*)ucs2_dst, (kal_int8*)ascii_dst);
    goto END;


END:
    KNI_StartHandles(1);
    KNI_DeclareHandle(string);
    KNI_NewString((const jchar*)ucs2_dst, (jsize)app_ucs2_strlen((kal_int8*)ucs2_dst), string);

    if(ucs2_src)         midpFree(ucs2_src);
    if(utf8_src)         midpFree(utf8_src);
    if(ascii_dst)        midpFree(ascii_dst);
    if(ucs2_dst)         midpFree(ucs2_dst);

    KNI_EndHandlesAndReturnObject(string);

FAIL:
    if(ucs2_dst)
        midpFree(ucs2_dst);
    ucs2_dst = NULL;
    goto END;


}
/*****************************************************************************
 * FUNCTION
 *  Java_com_ibm_oti_pim_EncodingHelper_decodeQuotedPrintableN
 * DESCRIPTION
 *  decode Quated Printable string
 * PARAMETERS
 * RETURNS
 *  void
 *****************************************************************************/
KNIEXPORT KNI_RETURNTYPE_OBJECT
Java_com_ibm_oti_pim_EncodingHelper_decodeQuotedPrintableN(void)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/

    kal_int32 len;
    kal_char *ucs2_src=NULL, *ascii_src=NULL,*utf8_dst=NULL, *ucs2_dst=NULL;

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    KNI_StartHandles(1);
    KNI_DeclareHandle(str);
    KNI_GetParameterAsObject(1, str);

    len = KNI_GetStringLength(str);

    if (len < 0)
    {
        goto FAIL;
    }
    else
    {
        ucs2_src = midpMalloc( (len + 1) << 1 );
        ascii_src = midpMalloc( len + 1 );
        utf8_dst = midpMalloc ( len + 1 );
        ucs2_dst = midpMalloc ( len + 1 );
        KNI_GetStringRegion(str, 0, len, (jchar*) ucs2_src);
        ucs2_src[len << 1] = ucs2_src[(len<<1) +1] = 0;
    }
    KNI_EndHandles();


    if(ucs2_src == NULL || ascii_src == NULL || utf8_dst == NULL || ucs2_dst == NULL)
    {
        goto FAIL;
    }

    app_ucs2_str_to_asc_str((kal_int8*)ascii_src, (kal_int8*)ucs2_src);


    if(applib_qprint_decode(ascii_src, strlen(ascii_src) , utf8_dst, len + 1 ) <= 0)
    {
        goto FAIL;
    }

    if (mmi_chset_convert(MMI_CHSET_UTF8, MMI_CHSET_UCS2, utf8_dst, ucs2_dst, len + 1) <= 0)
    {
        goto FAIL;
    }

END:
    KNI_StartHandles(1);
    KNI_DeclareHandle(string);
    KNI_NewString((const jchar*)ucs2_dst, (jsize)app_ucs2_strlen((kal_int8*)ucs2_dst), string);

    if(ucs2_src)         midpFree(ucs2_src);
    if(ascii_src)        midpFree(ascii_src);
    if(utf8_dst)         midpFree(utf8_dst);
    if(ucs2_dst)         midpFree(ucs2_dst);

    KNI_EndHandlesAndReturnObject(string);

FAIL:
    if(ucs2_dst)
        midpFree(ucs2_dst);
    ucs2_dst = NULL;
    goto END;

}
#endif

⌨️ 快捷键说明

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