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

📄 pim_item.c

📁 java 1.1 gemini 08_16
💻 C
📖 第 1 页 / 共 5 页
字号:
        category = pim_getCategoryByIndex(dbhandle, category_id);
	}
	else
	{
		category = NULL;
	}

    KNI_StartHandles(2);
    KNI_DeclareHandle(str_array);
    KNI_DeclareHandle(str);
    KNI_GetParameterAsObject(4, str_array);
    KNI_NewString((const jchar*)category, (jsize) app_ucs2_strlen((kal_int8*)category), str);
    KNI_SetObjectArrayElement(str_array, 0, str);
    KNI_EndHandles();

    KNI_ReturnInt(0);
}


/*****************************************************************************
 * FUNCTION
 *  Java_com_ibm_oti_pim_PIMItemImpl_getDateN
 * DESCRIPTION
 *  private native long getDateN(int listType, int handle, int rechandle, int field, int index);
 * PARAMETERS
 *  void
 * RETURNS
 *****************************************************************************/
KNIEXPORT KNI_RETURNTYPE_LONG
Java_com_ibm_oti_pim_PIMItemImpl_getDateN(void)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    kal_int32 listtype = KNI_GetParameterAsInt(1);
    kal_int32 dbhandle = KNI_GetParameterAsInt(2);
    kal_int32 rechandle = KNI_GetParameterAsInt(3);
    kal_int32 field = KNI_GetParameterAsInt(4);
//    kal_int32 index = KNI_GetParameterAsInt(5);

    void *item = NULL;
    kal_int64 dateData = 0;

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

    CHECK_FIELD_SUPPORT(listtype, dbhandle, field, KNI_ReturnLong(dateData));

    CHECK_ITEM_VALID(listtype, dbhandle, rechandle, &item, KNI_ReturnLong(dateData));

    switch (listtype)
    {
        case CONTACT_LIST:
            switch (field)
            {
                case C_BIRTHDAY:
                    FAILED_WITH_EXC(((IContact*) item), get_Birthday, (&dateData));
                    break;
            }
            break;

        case EVENT_LIST:
            switch (field)
            {
                case E_START:
                    FAILED_WITH_EXC(((IEvent*) item), get_Start, (&dateData));
                    break;

                case E_END:
                    FAILED_WITH_EXC(((IEvent*) item), get_End, (&dateData));
                    break;
            }
            break;

        case TODO_LIST:
            PIM_THROW(PIM, "", FEATURE_NOT_SUPPORTED);
            break;
        default:
            PIM_THROW(ILLARG, "", GENERAL_ERROR);
    }

    KNI_ReturnLong(dateData);
}


/*****************************************************************************
 * FUNCTION
 *  Java_com_ibm_oti_pim_PIMItemImpl_getFieldsN2
 * DESCRIPTION
 *  private native int getFieldsN2(int listType, int handle, int rechandle, int[] ret);
 * PARAMETERS
 *  void
 * RETURNS
 *****************************************************************************/
KNIEXPORT KNI_RETURNTYPE_INT
Java_com_ibm_oti_pim_PIMItemImpl_getFieldsN2(void)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    static kal_int32 fieldsArray[MAX_NUM_FIELDS];
    static kal_int32 arraysize = 0;

    kal_int32 listtype = KNI_GetParameterAsInt(1);
    kal_int32 dbhandle = KNI_GetParameterAsInt(2);
    kal_int32 rechandle = KNI_GetParameterAsInt(3);

    void *item = NULL;
    kal_bool getsize = 0;
    kal_int32 i;

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

    KNI_StartHandles(1);
    KNI_DeclareHandle(int_array);
    KNI_GetParameterAsObject(4, int_array);
    getsize = KNI_IsNullHandle(int_array);
    KNI_EndHandles();

    JPIM_DEBUG_1(TRACE_FUNC, FUNC_J2ME_PIMITEMIMPL_GETFIELDSN2, getsize);

    CHECK_FIELD_RELOAD(listtype, dbhandle, KNI_ReturnInt(-1));

    CHECK_ITEM_VALID(listtype, dbhandle, rechandle, &item, KNI_ReturnInt(-1));

    if (getsize)
    {
        arraysize = 0;
        switch (listtype)
        {
            case CONTACT_LIST:
            {
                IContact *pContact = (IContact*) item;

                arraysize = 0;
                for (i = NUM_CONTACT_FIELDS - 1; i >= 0; i--)
                {
                    if (countValuesForContact(pContact, contactFields[i]))
                    {
                        JPIM_DEBUG_1(TRACE_FUNC, JPIM_LOG_INTEGER, contactFields[i]);
                        fieldsArray[arraysize++] = contactFields[i];
                    }
                }
            }
                break;
            case EVENT_LIST:
            {
                IEvent *pEvent = (IEvent*) item;

                arraysize = 0;
                for (i = NUM_EVENT_FIELDS -1 ; i >= 0; i--)
                {
                    if (countValuesForEvent(pEvent, eventFields[i]))
                    {
                        JPIM_DEBUG_1(TRACE_FUNC, JPIM_LOG_INTEGER, eventFields[i]);
                        fieldsArray[arraysize++] = eventFields[i];
                    }
                }
            }
			break;
            default:
                arraysize = 0;
        }
        KNI_ReturnInt(arraysize);
    }

    KNI_StartHandles(1);
    KNI_DeclareHandle(int_array);
    KNI_GetParameterAsObject(4, int_array);
    for (i = 0; i < arraysize; i++)
    {
        KNI_SetIntArrayElement(int_array, i, fieldsArray[i]);
    }
    KNI_EndHandles();

    arraysize = 0;

    KNI_ReturnInt(0);
}


/*****************************************************************************
 * FUNCTION
 *  Java_com_ibm_oti_pim_PIMItemImpl_getIntN
 * DESCRIPTION
 *  private native int getIntN(int listType, int handle, int rechandle, int field, int index);
 * PARAMETERS
 *  void
 * RETURNS
 *****************************************************************************/
KNIEXPORT KNI_RETURNTYPE_INT
Java_com_ibm_oti_pim_PIMItemImpl_getIntN(void)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    kal_int32 listtype = KNI_GetParameterAsInt(1);
    kal_int32 dbhandle = KNI_GetParameterAsInt(2);
    kal_int32 rechandle = KNI_GetParameterAsInt(3);
    kal_int32 field = KNI_GetParameterAsInt(4);
//    kal_int32 index = KNI_GetParameterAsInt(5);

    kal_int32 result = 0;
    void *item = NULL;

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

    CHECK_FIELD_SUPPORT(listtype, dbhandle, field, KNI_ReturnInt(-1));

    CHECK_ITEM_VALID(listtype, dbhandle, rechandle, &item, KNI_ReturnInt(-1));

    switch (listtype)
    {
        case EVENT_LIST:
            switch (field)
            {
                case E_ALARM:
                {
                    kal_bool alarmEnabled;

                    FAILED_WITH_EXC(((IEvent*) item), get_ReminderSet, (&alarmEnabled));
                    if (alarmEnabled)
                    {
                        FAILED_WITH_EXC(((IEvent*) item), get_ReminderBeforeStart, (&result));
                    }
                    else
                    {
                        result = -1;
                    }
                }
                    break;
            }
            break;
        case TODO_LIST:
            PIM_THROW(PIM, "", FEATURE_NOT_SUPPORTED);
            break;
        default:
            PIM_THROW(ILLARG, "", GENERAL_ERROR);
    }

    KNI_ReturnInt(result);
}


/*****************************************************************************
 * FUNCTION
 *  Java_com_ibm_oti_pim_PIMItemImpl_getStringArrayN2
 * DESCRIPTION
 *  private native int getStringArrayN2(int listType, int handle, int rechandle, int field, int index, String[] ret);
 * PARAMETERS
 *  void
 * RETURNS
 *****************************************************************************/
KNIEXPORT KNI_RETURNTYPE_INT
Java_com_ibm_oti_pim_PIMItemImpl_getStringArrayN2(void)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    PIM_THROW(PIM, "No String array fields available", FEATURE_NOT_SUPPORTED);
    KNI_ReturnInt(0);
}


/*****************************************************************************
 * FUNCTION
 *  getContactTelephone
 * DESCRIPTION
 *
 * PARAMETERS
 *  pContact        [?]
 *  index           [IN]
 * RETURNS
 *
 *****************************************************************************/
static kal_char *getContactTelephone(IContact *pContact, kal_int32 index)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    kal_char *telData;

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

    FAILED_WITH_EXC(pContact, get_MobileNumber, &telData);
    if (NOT_EMPTY(telData))
    {
        index--;
        if (index < 0)
        {
            return telData; /* default */
        }
    }

    FAILED_WITH_EXC(pContact, get_HomeNumber, &telData);
    if (NOT_EMPTY(telData))
    {
        index--;
        if (index < 0)
        {
            return telData;
        }
    }

    FAILED_WITH_EXC(pContact, get_OfficeNumber, &telData);
    if (NOT_EMPTY(telData))
    {
        index--;
        if (index < 0)
        {
            return telData;
        }
    }

    FAILED_WITH_EXC(pContact, get_FaxNumber, &telData);
    if (NOT_EMPTY(telData))
    {
        index--;
        if (index < 0)
        {
            return telData;
        }
    }

    return NULL;
}


/*****************************************************************************
 * FUNCTION
 *  getContactString
 * DESCRIPTION
 *
 * PARAMETERS
 *  pContact        [?]
 *  field           [IN]
 *  index           [IN]
 * RETURNS
 *
 *****************************************************************************/
static kal_char *getContactString(IContact *pContact, kal_int32 field, kal_int32 index)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    kal_char *strData = NULL;

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    JPIM_DEBUG_1(TRACE_FUNC, FUNC_J2ME_GETCONTACTSTRING, field);

    switch (field)
    {
        case C_FORMATTED_ADDR:
            FAILED_WITH_EXC(pContact, get_FormattedAddress, (&strData));
            break;

        case C_FORMATTED_NAME:
            FAILED_WITH_EXC(pContact, get_FormattedName, (&strData));
            break;

        case C_NICKNAME:
            FAILED_WITH_EXC(pContact, get_NickName, (&strData));
            break;

        case C_EMAIL:
            FAILED_WITH_EXC(pContact, get_EmailAddress, (&strData));
            break;

        case C_TEL:
            strData = getContactTelephone(pContact, index);
            break;

        case C_NOTE:
            FAILED_WITH_EXC(pContact, get_ContactNote, (&strData));
            break;

⌨️ 快捷键说明

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