📄 pim_main.c
字号:
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 + -