// *****************************************************************************
void GFX_GOL_CheckBoxActionSet(
                                GFX_GOL_TRANSLATED_ACTION translatedMsg,
                                void *pObject,
                                GFX_GOL_MESSAGE *pMessage)
{
    GFX_GOL_CHECKBOX *pCb;

    pCb = (GFX_GOL_CHECKBOX *)pObject;

#ifndef GFX_CONFIG_FOCUS_DISABLE
#ifndef GFX_CONFIG_USE_TOUCHSCREEN_DISABLE
    if(pMsg->type == TYPE_TOUCHSCREEN)
    {
        if(!GFX_GOL_ObjectStateGet(pCb, GFX_GOL_CHECKBOX_FOCUSED_STATE))
        {
            GFX_GOL_ObjectFocusSet((OBJ_HEADER *)pCb);
        }
    }

#endif
#endif

    switch(translatedMsg)
    {
        case GFX_GOL_CHECKBOX_ACTION_CHECKED:
            // Set checked and redraw
            GFX_GOL_ObjectStateSet( pCb, GFX_GOL_CHECKBOX_CHECKED_STATE |
                                    GFX_GOL_CHECKBOX_DRAW_CHECK_STATE);
            break;

        case GFX_GOL_CHECKBOX_ACTION_UNCHECKED:
            // Reset check
            GFX_GOL_ObjectStateClear(pCb, GFX_GOL_CHECKBOX_CHECKED_STATE);
            // Redraw
            GFX_GOL_ObjectStateSet(pCb, GFX_GOL_CHECKBOX_DRAW_CHECK_STATE);
            break;
        default:
            // do nothing
            return;
    }
}
Beispiel #2
0
/////////////////////////////////////////////////////////////////////////////
// Function: WORD GOLMsgCallback(WORD objMsg, OBJ_HEADER* pObj, GOL_MSG* pMsg)
// Input: objMsg - translated message for the object,
//        pObj - pointer to the object,
//        pMsg - pointer to the non-translated, raw GOL message
// Output: if the function returns non-zero the message will be processed by default
// Overview: it's a user defined function. GOLMsg() function calls it each
//           time the valid message for the object received
/////////////////////////////////////////////////////////////////////////////
bool GFX_GOL_MessageCallback(GFX_GOL_TRANSLATED_ACTION objMsg, GFX_GOL_OBJ_HEADER *pObj, GFX_GOL_MESSAGE *pMsg)
{
    uint16_t objID;

    // check first if we need to exit the selected demo (if applicable)
    if ((objMsg == GFX_GOL_BUTTON_ACTION_RELEASED) && (pObj->ID == ID_BACK))
    {   
        // check if the button is indeed pressed
        if (GFX_GOL_ObjectStateGet(pObj, GFX_GOL_BUTTON_PRESSED_STATE))
        {
            screenState = CREATE_MAINMENU;
            return 1;
        }    
    }
    // process messages for demo screens
    switch(screenState)
    {
        case DISPLAY_MAINMENU:

            // In this portion, all management of the Button states are 
            // done here. This portion will always return 0 to inhibit
            // the button default message processing to take place.
                        
            objID = GFX_GOL_ObjectIDGet(pObj);
            if ((objID == ID_ICON1) || (objID == ID_ICON2) ||
                (objID == ID_ICON3) || (objID == ID_ICON4))
            {    
                if(objMsg == GFX_GOL_BUTTON_ACTION_PRESSED)
                {    
                    // check if button is pressed and show pressed icon
                    GFX_GOL_ObjectStateSet(pObj, GFX_GOL_BUTTON_PRESSED_STATE);
                }
                else if(objMsg == GFX_GOL_BUTTON_ACTION_RELEASED)
                {
                    // check if button is released and show release icon
                    GFX_GOL_ObjectStateClear(pObj, GFX_GOL_BUTTON_PRESSED_STATE);
                    if (objID == ID_ICON1)
                        {
                         while(GFX_DoubleBufferDisable() == GFX_STATUS_FAILURE);
                         PIPDemo();
                         screenState = CREATE_MAINMENU;
                         }
                        else if (objID == ID_ICON2)
                        {
                         while(GFX_DoubleBufferDisable() == GFX_STATUS_FAILURE);
                         SpeedDemo();
                         screenState = CREATE_MAINMENU;
                        }  
                        
                    else if (objID == ID_ICON3)
                        {
                        screenState = CREATE_ALPHABLEND;
                        } 
                   else if (objID == ID_ICON4)
                        {
                        while(GFX_DoubleBufferDisable() == GFX_STATUS_FAILURE);
                        PagingDemo();
                        screenState = CREATE_MAINMENU;
                        }
                    else
                        // this should not happen 
                        screenState = DISPLAY_MAINMENU;    
                }
                else if(objMsg == GFX_GOL_BUTTON_ACTION_STILLPRESSED)
                {
                    // do not do anything since it is already pressed
                    return 0;     
                }    
                else
                {
                    // check if button is released and show release icon
                    GFX_GOL_ObjectStateClear(pObj, GFX_GOL_BUTTON_PRESSED_STATE);              // reset pressed
                }            
                
                GFX_GOL_ObjectStateSet(pObj, GFX_GOL_BUTTON_DRAW_STATE);
                return 0;
            }
            if ((objID == ID_SCROLL1) || (objID == ID_SCROLL2) ||
                (objID == ID_SCROLL3) || (objID == ID_SCROLL4))
            {    
                if(objMsg == GFX_GOL_BUTTON_ACTION_RELEASED)
                {
                 switch(objID) //Up = 1, Down = 2, Left = 3, Right = 4 
                 {
                    case ID_SCROLL1:
                    ScrollScreen(3,10);
                    break;
                    case ID_SCROLL2:
                    ScrollScreen(1,10);
                    break;
                    case ID_SCROLL3:
                    ScrollScreen(4,10);
                    break;
                    case ID_SCROLL4:
                    ScrollScreen(2,10);
                    break;
                 }

                }
            }
            break;

        case DISPLAY_ALPHABLEND:
            return (MsgAlphaBlendScreenCallback(objMsg, pObj, pMsg));

        default:
            break;
    }        

    return (1);
}