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

📄 pim_item.c

📁 java 1.1 gemini 08_16
💻 C
📖 第 1 页 / 共 5 页
字号:
            {
                count++;
                JPIM_DEBUG_1(TRACE_FUNC, FUNC_J2ME_COUNTVALUESFORCONTACT, C_URL);
            }
            break;

        case C_BIRTHDAY:
            FAILED_WITH_EXC(pContact, get_Birthday, &tempDateVal);
            if (tempDateVal != EMPTY_DATE)
            {
                count++;
                JPIM_DEBUG_1(TRACE_FUNC, FUNC_J2ME_COUNTVALUESFORCONTACT, C_BIRTHDAY);
            }
            break;
    }
    return count;
}

/*****************************************************************************
 * FUNCTION
 *  countValuesForEvent
 * DESCRIPTION
 *
 * PARAMETERS
 *  pEvent      [?]
 *  field       [IN]
 * RETURNS
 *
 *****************************************************************************/
static kal_int32 countValuesForEvent(IEvent *pEvent, kal_int32 field)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/

    kal_int32 count = 0;
    kal_char *tempFieldVal;
    kal_int64 tempDateVal;
    kal_bool tempBoolVal;

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

    if (pEvent == NULL)
    {
        return 0;
    }

    switch (field)
    {
        case E_ALARM:

            FAILED_WITH_EXC(pEvent, get_ReminderSet, &tempBoolVal);
            if( tempBoolVal == KAL_TRUE)
            {
                count++;
                JPIM_DEBUG_1(TRACE_FUNC, FUNC_J2ME_COUNTVALUESFOREVENT,E_ALARM);
            }
            break;
        case E_START:
            FAILED_WITH_EXC(pEvent, get_Start, &tempDateVal);
            if (tempDateVal != EMPTY_DATE)
            {
                count++;
                JPIM_DEBUG_1(TRACE_FUNC, FUNC_J2ME_COUNTVALUESFOREVENT,E_START);
            }
            break;
        case E_END:
            FAILED_WITH_EXC(pEvent, get_End, &tempDateVal);
            if (tempDateVal != EMPTY_DATE)
            {
                count++;
                JPIM_DEBUG_1(TRACE_FUNC, FUNC_J2ME_COUNTVALUESFOREVENT,E_END);
            }
            break;
        case E_SUMMARY:
            FAILED_WITH_EXC(pEvent, get_Summary, &tempFieldVal);
            if (NOT_EMPTY(tempFieldVal))
            {
                count++;
                JPIM_DEBUG_1(TRACE_FUNC, FUNC_J2ME_COUNTVALUESFOREVENT,E_SUMMARY);
            }
            break;
    }
    return count;
}


/*****************************************************************************
 * FUNCTION
 *  Java_com_ibm_oti_pim_PIMItemImpl_countValuesN
 * DESCRIPTION
 *  private native int countValuesN(int listType, int handle, int rechandle, int field);
 * PARAMETERS
 *  void
 * RETURNS
 *****************************************************************************/
KNIEXPORT KNI_RETURNTYPE_INT
Java_com_ibm_oti_pim_PIMItemImpl_countValuesN(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 count = -1;
    void *item = NULL;

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

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

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

    switch (listtype)
    {
        case CONTACT_LIST:
            count = countValuesForContact((IContact*) item, field);
            break;

        case EVENT_LIST:
            count = countValuesForEvent((IEvent*) item, field);
            break;

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

    }

    KNI_ReturnInt(count);
}


/*****************************************************************************
 * FUNCTION
 *  getContactFieldAttribute
 * DESCRIPTION
 *
 * PARAMETERS
 *  pContact        [?]
 *  field           [IN]
 *  index           [IN]
 * RETURNS
 *
 *****************************************************************************/
static kal_int32 getContactFieldAttribute(IContact *pContact, kal_int32 field, kal_int32 index)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    int attr = C_ATTR_NONE;

    kal_char *tempFieldVal;

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

    if (pContact == NULL)
    {
        return attr;
    }

    switch (field)
    {
        case C_TEL:
            FAILED_WITH_EXC(pContact, get_MobileNumber, &tempFieldVal);
            if (NOT_EMPTY(tempFieldVal))
            {
                index--;
                if (index < 0)
                {
                    return C_ATTR_MOBILE;   /* default */
                }
            }

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

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

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

            break;
    }
    return attr;
}


/*****************************************************************************
 * FUNCTION
 *  Java_com_ibm_oti_pim_PIMItemImpl_getAttributesN
 * DESCRIPTION
 *  private native int getAttributesN(int listType, int handle, int rechandle, int field, int index);
 * PARAMETERS
 *  void
 * RETURNS
 *****************************************************************************/
KNIEXPORT KNI_RETURNTYPE_INT
Java_com_ibm_oti_pim_PIMItemImpl_getAttributesN(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 attr = -1;
    void *item;

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

    CHECK_FIELD_SUPPORT(listtype, dbhandle, field, KNI_ReturnInt(C_ATTR_NONE));

    if (listtype != CONTACT_LIST || field != C_TEL)
    {
        KNI_ReturnInt(C_ATTR_NONE);
    }

    CHECK_ITEM_VALID(listtype, dbhandle, rechandle, &item, KNI_ReturnInt(C_ATTR_NONE));

    attr = getContactFieldAttribute(item, field, index);

    KNI_ReturnInt(attr);
}


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

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


/*****************************************************************************
 * FUNCTION
 *  Java_com_ibm_oti_pim_PIMItemImpl_getBooleanN
 * DESCRIPTION
 *  private native boolean getBooleanN(int listType, int handle, int rechandle, int field, int index);
 * PARAMETERS
 *  void
 * RETURNS
 *****************************************************************************/
KNIEXPORT KNI_RETURNTYPE_BOOLEAN
Java_com_ibm_oti_pim_PIMItemImpl_getBooleanN(void)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/

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


/*****************************************************************************
 * FUNCTION
 *  Java_com_ibm_oti_pim_PIMItemImpl_getCategoriesN2
 * DESCRIPTION
 *  private native int getCategoriesN2(int listType, int handle, int rechandle, String[] ret);
 * PARAMETERS
 *  void
 * RETURNS
 *****************************************************************************/
KNIEXPORT KNI_RETURNTYPE_INT
Java_com_ibm_oti_pim_PIMItemImpl_getCategoriesN2(void)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    kal_int32 listtype = KNI_GetParameterAsInt(1);
    kal_int32 dbhandle = KNI_GetParameterAsInt(2);
    kal_int32 rechandle = KNI_GetParameterAsInt(3);
    kal_int32 result = 0;
    kal_bool getsize = 0;
    kal_int32 category_id;
    kal_wchar *category;

    void *item;

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

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

    JPIM_DEBUG_1(TRACE_FUNC, FUNC_J2ME_PIMITEMIMPL_GETCATEGORIESN2, getsize);

    CHECK_ITEM_VALID(listtype, dbhandle, rechandle,  &item, KNI_ReturnInt(0));


    switch (listtype)
    {
        case CONTACT_LIST:
            FAILED_WITH_EXC(((IContact*) item), get_CategoryIndex, &category_id);
            break;
        case EVENT_LIST:
            category_id = -1;
            break;
        case TODO_LIST:
            PIM_THROW(PIM, "", FEATURE_NOT_SUPPORTED);
            category_id = -1;
            break;
        default:
            PIM_THROW(ILLARG, "", GENERAL_ERROR);
            category_id = -1;
    }

    if (getsize)
    {
        if(category_id > 0)
        {
            KNI_ReturnInt(1);
        }
        else
        {
            KNI_ReturnInt(0);
        }
    }

    if ((result = pim_getCategories(dbhandle)) != SUCCESS)
    {
        PIM_THROW(result, NULL, pim_getDetailError());
        KNI_ReturnInt(0);
    }

    if( category_id > 0 )
	{

⌨️ 快捷键说明

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