static void MouseUp( HWND w, DWORD l ) { WORD id ; HWND hwnd ; WORD cmd ; LPARAM lparam ; WPARAM wparam ; id = GetDlgCtrlID(w) ; hwnd = w ; cmd = BN_CLICKED ; #ifdef WIN32 lparam = (LPARAM)hwnd ; wparam = MAKEWPARAM(id,cmd) ; #else wparam = (WPARAM)id ; lparam = MAKELPARAM(hwnd,cmd) ; #endif if ( TstState( FB_CAPTURING ) ) { MouseMove( w, l ) ; ReleaseCapture() ; ClrState( FB_TO_SET | FB_CAPTURING ) ; if ( TstState( (WORD)FB_SELECTED ) ) MakeRadioIteration( w ) ; SendMessage( GetParent( w ), WM_COMMAND, wparam , lparam) ; } }
/********************************************************************* * Function: BtnMsgDefault(WORD translatedMsg, BUTTON *pB, GOL_MSG* pMsg) * * * Notes: This the default operation to change the state of the button. * Called inside GOLMsg() when GOLMsgCallback() returns a 1. * ********************************************************************/ void BtnMsgDefault(WORD translatedMsg, BUTTON *pB, GOL_MSG* pMsg){ #ifdef USE_FOCUS #ifdef USE_TOUCHSCREEN if(pMsg->type == TYPE_TOUCHSCREEN){ if(!GetState(pB,BTN_FOCUSED)){ GOLSetFocus((OBJ_HEADER*)pB); } } #endif #endif switch(translatedMsg){ case BTN_MSG_PRESSED: SetState(pB, BTN_PRESSED|BTN_DRAW); // set pressed and redraw break; case BTN_MSG_RELEASED: ClrState(pB, BTN_PRESSED); // reset pressed SetState(pB, BTN_DRAW); // redraw break; } }
static void MouseMove( HWND w, DWORD l ) { if ( TstState( FB_CAPTURING ) ) { RECT r ; GetClientRect( w, & r ) ; if ( XyInRect( LOWORD( l ), HIWORD( l ), r ) ) { if ( ! TstState( FB_TO_SET ) ) { SetState( (WORD)FB_TO_SET ) ; XorState( (WORD)FB_SELECTED ) ; InvalidateRect( w, 0, 1 ) ; } } else if ( TstState( FB_TO_SET ) ) { ClrState( (WORD)FB_TO_SET ) ; XorState( (WORD)FB_SELECTED ) ; InvalidateRect( w, 0, 1 ) ; } } }
/***************************************************************************** * void CreateLightingScreen(void) * * NOTE: The lighting demo is not available when using the PIC24FJ256GB210. * The demo requires loading an image from the external memory, the Epson * S1D13517 () has some routing conflicts which make loading the image * difficult and not robust. For these reasons, the lighting demo has * been take out for a better out of box experience. *****************************************************************************/ void CreateLightingScreen(void) { GOL_SCHEME *currentScheme; currentScheme = GFX_SchemeGetCurrentScheme(); SetColor(currentScheme->Color0); while(!FillBevel((GetMaxX() >> 2) + 20,90 ,GetMaxX() - 10, GetMaxY()-10,5)); while(!AlphaBlendWindow(GetDrawBufferAddress(), (GetMaxX() >> 2) + 15, 85, GFX_PAGE1, (GetMaxX() >> 2) + 15, 85, GetDrawBufferAddress(), (GetMaxX() >> 2) + 15, 85, (GetMaxX())-((GetMaxX() >> 2) + 15), GetMaxY() - 90, GFX_SchemeGetDefaultScheme()->AlphaValue)); SetState(GOLFindObject(PANEL_SCREEN_ID_LIGHTING_BUT), BTN_DISABLED); if(GetState(GOLFindObject(PANEL_SCREEN_ID_COMFORT_BUT),BTN_DISABLED)) { ClrState(GOLFindObject(PANEL_SCREEN_ID_COMFORT_BUT), BTN_DISABLED); SetState(GOLFindObject(PANEL_SCREEN_ID_COMFORT_BUT),BTN_DRAW); } if(GetState(GOLFindObject(PANEL_SCREEN_ID_SECURITY_BUT),BTN_DISABLED)) { ClrState(GOLFindObject(PANEL_SCREEN_ID_SECURITY_BUT), BTN_DISABLED); SetState(GOLFindObject(PANEL_SCREEN_ID_SECURITY_BUT),BTN_DRAW); } if(GetState(GOLFindObject(PANEL_SCREEN_ID_ENERGY_USAGE_BUT),BTN_DISABLED)) { ClrState(GOLFindObject(PANEL_SCREEN_ID_ENERGY_USAGE_BUT), BTN_DISABLED); SetState(GOLFindObject(PANEL_SCREEN_ID_ENERGY_USAGE_BUT),BTN_DRAW); } /*** * See above note in the function comment for more information **/ #ifndef __PIC24FJ256GB210__ GFX_BlockUntilFinished(PutImage((GetMaxX() >> 2)+40, 90+10, (void *) &House, IMAGE_NORMAL)); #endif }
/********************************************************************* * Function: void GOLSetFocus(OBJ_HEADER* object) * * PreCondition: none * * Input: pointer to the object to be focused * * Output: * * Side Effects: none * * Overview: moves keyboard focus to the object * * Note: none * ********************************************************************/ void GOLSetFocus(OBJ_HEADER* object){ if(!GOLCanBeFocused(object)) return; if(_pObjectFocused != NULL){ ClrState(_pObjectFocused, FOCUSED); SetState(_pObjectFocused, DRAW_FOCUS); } SetState(object, DRAW_FOCUS|FOCUSED); _pObjectFocused = object; }
static void CheckKeyDown( HWND w, int down ) { WORD id ; HWND hwnd ; WORD cmd ; LPARAM lparam ; WPARAM wparam ; id = GetDlgCtrlID(w) ; hwnd = w ; cmd = BN_CLICKED ; #ifdef WIN32 lparam = (LPARAM)hwnd ; wparam = MAKEWPARAM(id,cmd) ; #else wparam = (WPARAM)id ; lparam = MAKELPARAM(hwnd,cmd) ; #endif if ( ! TstState( FB_CAPTURING ) ) if ( down && ! TstState( FB_KEYDOWN ) ) { if ( ! TstState( FB_SELECTED ) || ! TstF( GetStyle(), FC_RADIO ) ) { XorState( (WORD)FB_SELECTED ) ; SetState( (WORD)FB_KEYDOWN ) ; InvalidateRect( w, 0, 1 ) ; } } else if ( ( ! down ) && TstState( FB_KEYDOWN ) ) { ClrState( (WORD)FB_KEYDOWN ) ; MakeRadioIteration( w ) ; SendMessage( GetParent( w ), WM_COMMAND, wparam , lparam) ; } }
/********************************************************************* * Function: CbMsgDefault(WORD translatedMsg, CHECKBOX *pCb, GOL_MSG* pMsg) * * Overview: Changes the state of the check box by default. * ********************************************************************/ void CbMsgDefault(WORD translatedMsg, CHECKBOX* pCb, GOL_MSG* pMsg) { #ifdef USE_FOCUS #ifdef USE_TOUCHSCREEN if(pMsg->type == TYPE_TOUCHSCREEN) { if(!GetState(pCb,CB_FOCUSED)) { GOLSetFocus((OBJ_HEADER*)pCb); } } #endif #endif switch(translatedMsg) { case CB_MSG_CHECKED: SetState(pCb, CB_CHECKED|CB_DRAW_CHECK); // Set checked and redraw break; case CB_MSG_UNCHECKED: ClrState(pCb, CB_CHECKED); // Reset check SetState(pCb, CB_DRAW_CHECK); // Redraw break; } }
/************************************************************************ Function: WORD MsgAnimation(WORD objMsg, OBJ_HEADER* pObj, GOL_MSG* pMsg) Overview: This function is called by GOLMsg() function when in this particular demo each time the valid message is received for the objects in the demo. Input: objMsg - translated message for the object, pObj - pointer to the object, pMsg - pointer to the original GOL message. Output: If the function returns non-zero the message will be processed by the object directly affected by the message. Default action on the object based on the message will be performed. ************************************************************************/ WORD MsgAnimation(WORD objMsg, OBJ_HEADER *pObj, GOL_MSG *pMsg) { static BYTE scale = 2; WORD value; if(objMsg == BTN_MSG_RELEASED) { switch(GetObjID(pObj)) { case ID_BUTTON_A: if(objMsg == BTN_MSG_RELEASED) { // do not process if user moved the touch away from the button // returning 1 wil update the button if(pMsg->uiEvent == EVENT_MOVE) return (1); // implements some form of debounce // add code here. screenState = CREATE_DEMOSELECTION; return (0); } case ID_BUTTON_B: if(objMsg == BTN_MSG_RELEASED) { // do not process if user moved the touch away from the button // returning 1 wil update the button if(pMsg->uiEvent == EVENT_MOVE) return (1); } if(scale == 1) { PictSetScale(pPicture, 2); // x2 scale = 2; ClrState(pPicture, PICT_FRAME); // set redraw state } else { PictSetScale(pPicture, 1); // x1 scale = 1; SetState(pPicture, PICT_FRAME); // set redraw state } SetState(pPicture, PICT_DRAW); // set redraw state return (1); // process by default case ID_BUTTON_C: if(GetState((BUTTON *)GOLFindObject(ID_BUTTON_C), BTN_PRESSED)) { value = MtrGetVal(pMeter); // get current value MtrDecVal(pMeter, 1); SetState(pMeter, MTR_DRAW_UPDATE); } return (1); case ID_BUTTON_D: if(GetState((BUTTON *)GOLFindObject(ID_BUTTON_D), BTN_PRESSED)) { value = MtrGetVal(pMeter); // get current value MtrIncVal(pMeter, 1); SetState(pMeter, MTR_DRAW_UPDATE); } return (1); // process by default default: return (1); // process by default } } return (1); // process by default }
/************************************************************************ Function: WORD JPEGMsgCallback(WORD objMsg, OBJ_HEADER* pObj, GOL_MSG* pMsg) Overview: This function is called by GOLMsg() function when in this particular demo each time the valid message is received for the objects in the demo. 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 the object directly affected by the message. Default action on the object based on the message will be performed. ************************************************************************/ WORD JPEGMsgCallback(WORD objMsg, OBJ_HEADER *pObj, GOL_MSG *pMsg) { LISTITEM *pItemSel; // check if an image is being shown if((blImageOnScreen == 1) || (blSlideShowOn == 1)) { // this is the routine to go back and show the list when an // image is being shown on the screen or the slide show is // currently ongoing if(pMsg->uiEvent == EVENT_RELEASE) { blImageOnScreen = 0; blSlideShowOn = 0; GOLRedrawRec(0, 0, GetMaxX(), GetMaxY()); } return (0); } switch(GetObjID(pObj)) { case ID_BUTTON_A: if(objMsg == BTN_MSG_RELEASED) { // check if button is pressed // do not process if user moved the touch away from the button // returning 1 wil update the button if(pMsg->uiEvent == EVENT_MOVE) return (1); screenState = CREATE_DEMOSELECTION; } return (1); case ID_BUTTON_D: if(objMsg == BTN_MSG_RELEASED) { // check if button is pressed // do not process if user moved the touch away from the button // returning 1 wil update the button if(pMsg->uiEvent == EVENT_MOVE) return (1); // enable the slide show blSlideShowOn = 1; // initialize the screen SetColor(BLACK); ClearDevice(); ClrState(pObj, BTN_PRESSED); // clear the pressed state, will be shown only when redrawn blSlideShowDelay = 0; // force slide show to immediately start return (0); } return (1); case ID_JPGLISTBOX: if(pMsg->uiEvent == EVENT_MOVE) { pMsg->uiEvent = EVENT_PRESS; // change event for listbox // Process message by default LbMsgDefault(objMsg, (LISTBOX *)pObj, pMsg); // Set new list box position SldSetPos(pSlider, LbGetCount(pListBox) - LbGetFocusedItem(pListBox) - 1); SetState(pSlider, SLD_DRAW_THUMB); pMsg->uiEvent = EVENT_MOVE; // restore event for listbox } else if(pMsg->uiEvent == EVENT_PRESS) { // call the message default processing of the list box to select the item LbMsgDefault(objMsg, (LISTBOX *)pObj, pMsg); } else if(pMsg->uiEvent == EVENT_RELEASE) { // check which item was selected and display appropriate screen pItemSel = LbGetSel(pListBox, NULL); // get the selected item if(aFolderElement[pItemSel->data].blFolder == 1) { if(FSchdir(aFolderElement[pItemSel->data].Name) == 0) { FillNewElements(); return (1); } } else if(aFolderElement[pItemSel->data].blText == 0) { IMG_FILE *pImgFile = IMG_FOPEN(aFolderElement[pItemSel->data].Name, "rb"); if(pImgFile != NULL) { blImageOnScreen = 1; // initialize the screen SetColor(BLACK); ClearDevice(); if ( ImageDecode ( pImgFile, aFolderElement[pItemSel->data].ImgType, 0, 0, IMG_SCREEN_WIDTH, IMG_SCREEN_HEIGHT, (IMG_DOWN_SCALE | IMG_ALIGN_CENTER), NULL, NULL ) ) { DisplayErrorInfo(); } IMG_FCLOSE(pImgFile); } } } // The message was processed. To avoid other objects processing the // processed message reset the message. pMsg->uiEvent = EVENT_INVALID; return (0); case ID_SLD4LB: if((objMsg == SLD_MSG_INC) || (objMsg == SLD_MSG_DEC)) { // check slider was touched. // Process message by default SldMsgDefault(objMsg, (SLIDER *)pObj, pMsg); // Set new list box position if(LbGetFocusedItem(pListBox) != LbGetCount(pListBox) - SldGetPos(pSlider)) { LbSetFocusedItem(pListBox, LbGetCount(pListBox) - SldGetPos(pSlider)); SetState(pListBox, LB_DRAW_ITEMS); } } // The message was processed return (0); case ID_BTNUP4LB: // slider up button was pressed if(objMsg == BTN_MSG_RELEASED) { // check if we have reached the very first then stay there. if (LbGetFocusedItem(pListBox) == 0) LbSetFocusedItem(pListBox,0); else LbSetFocusedItem(pListBox,LbGetFocusedItem(pListBox)-1); SetState(pListBox, LB_DRAW_ITEMS); SldSetPos(pSlider, SldGetPos(pSlider) + 1); SetState(pSlider, SLD_DRAW_THUMB); } return (1); case ID_BTNDN4LB: // slider down button was pressed if(objMsg == BTN_MSG_RELEASED) { // set all items to be not displayed pItemSel = pListBox->pItemList; while(pItemSel != NULL) { pItemSel->status = 0; pItemSel = pItemSel->pNextItem; } LbSetFocusedItem(pListBox, LbGetFocusedItem(pListBox) + 1); SetState(pListBox, LB_DRAW_ITEMS); SldSetPos(pSlider, SldGetPos(pSlider) - 1); SetState(pSlider, SLD_DRAW_THUMB); } return (1); } return (1); }
Function: void TranslateMessageGeneric( GOL_MSG* msg ) Description: This function translates the keypad message into the appropriate message for a generic, 4-button menu screen. It can be used as the message processing function for any generic screen. Precondition: None Parameters: GOL_MSG * msg - The current message information Returns: None Remarks: None ***************************************************************************/ void TranslateMessageGeneric( GOL_MSG * pMsg ) { if ((pMsg->uiEvent == EVENT_KEYSCAN) && (pMsg->type == TYPE_KEYBOARD) && (pMsg->param1 == ID_TOUCH_PAD)) { switch (pMsg->param2) { case SCAN_UP_PRESSED: if (GetState( (BUTTON *)GOLFindObject( ID_BOTTOM_LEFT ), BTN_PRESSED )) { ClrState( (BUTTON *)GOLFindObject( ID_BOTTOM_LEFT ), BTN_PRESSED ); SetState( (BUTTON *)GOLFindObject( ID_BOTTOM_LEFT ), BTN_DRAW ); SetState( (BUTTON *)GOLFindObject( ID_TOP_LEFT ), BTN_PRESSED | BTN_DRAW ); } else if (GetState( (BUTTON *)GOLFindObject( ID_BOTTOM_RIGHT ), BTN_PRESSED )) { ClrState( (BUTTON *)GOLFindObject( ID_BOTTOM_RIGHT ), BTN_PRESSED ); SetState( (BUTTON *)GOLFindObject( ID_BOTTOM_RIGHT ), BTN_DRAW ); SetState( (BUTTON *)GOLFindObject( ID_TOP_RIGHT ), BTN_PRESSED | BTN_DRAW ); } else if (GetState( (BUTTON *)GOLFindObject( ID_THIRDROW ), BTN_PRESSED ) && !strcmp(pageInformation.title,"Demonstrations")) { ClrState( (BUTTON *)GOLFindObject( ID_THIRDROW ), BTN_PRESSED ); SetState( (BUTTON *)GOLFindObject( ID_THIRDROW ), BTN_DRAW ); SetState( (BUTTON *)GOLFindObject( ID_BOTTOM_LEFT ), BTN_PRESSED | BTN_DRAW ); } break; case SCAN_DOWN_PRESSED: if (GetState( (BUTTON *)GOLFindObject( ID_TOP_LEFT ), BTN_PRESSED )) { ClrState( (BUTTON *)GOLFindObject( ID_TOP_LEFT ), BTN_PRESSED ); SetState( (BUTTON *)GOLFindObject( ID_TOP_LEFT ), BTN_DRAW ); SetState( (BUTTON *)GOLFindObject( ID_BOTTOM_LEFT ), BTN_PRESSED | BTN_DRAW ); } else if (GetState( (BUTTON *)GOLFindObject( ID_TOP_RIGHT ), BTN_PRESSED )) { ClrState( (BUTTON *)GOLFindObject( ID_TOP_RIGHT ), BTN_PRESSED ); SetState( (BUTTON *)GOLFindObject( ID_TOP_RIGHT ), BTN_DRAW ); SetState( (BUTTON *)GOLFindObject( ID_BOTTOM_RIGHT ), BTN_PRESSED | BTN_DRAW ); } else if (GetState( (BUTTON *)GOLFindObject( ID_BOTTOM_LEFT ), BTN_PRESSED ) && !strcmp(pageInformation.title,"Demonstrations")) { ClrState( (BUTTON *)GOLFindObject( ID_BOTTOM_LEFT ), BTN_PRESSED ); SetState( (BUTTON *)GOLFindObject( ID_BOTTOM_LEFT ), BTN_DRAW ); SetState( (BUTTON *)GOLFindObject( ID_THIRDROW ), BTN_PRESSED | BTN_DRAW ); } break; case SCAN_RIGHT_PRESSED: if (GetState( (BUTTON *)GOLFindObject( ID_TOP_LEFT ), BTN_PRESSED )) { ClrState( (BUTTON *)GOLFindObject( ID_TOP_LEFT ), BTN_PRESSED ); SetState( (BUTTON *)GOLFindObject( ID_TOP_LEFT ), BTN_DRAW ); SetState( (BUTTON *)GOLFindObject( ID_TOP_RIGHT ), BTN_PRESSED | BTN_DRAW ); } else if (GetState( (BUTTON *)GOLFindObject( ID_BOTTOM_LEFT ), BTN_PRESSED )) { ClrState( (BUTTON *)GOLFindObject( ID_BOTTOM_LEFT ), BTN_PRESSED ); SetState( (BUTTON *)GOLFindObject( ID_BOTTOM_LEFT ), BTN_DRAW ); SetState( (BUTTON *)GOLFindObject( ID_BOTTOM_RIGHT ), BTN_PRESSED | BTN_DRAW ); } break; case SCAN_LEFT_PRESSED: if (GetState( (BUTTON *)GOLFindObject( ID_TOP_RIGHT ), BTN_PRESSED )) { ClrState( (BUTTON *)GOLFindObject( ID_TOP_RIGHT ), BTN_PRESSED ); SetState( (BUTTON *)GOLFindObject( ID_TOP_RIGHT ), BTN_DRAW ); SetState( (BUTTON *)GOLFindObject( ID_TOP_LEFT ), BTN_PRESSED | BTN_DRAW ); } else if (GetState( (BUTTON *)GOLFindObject( ID_BOTTOM_RIGHT ), BTN_PRESSED )) { ClrState( (BUTTON *)GOLFindObject( ID_BOTTOM_RIGHT ), BTN_PRESSED ); SetState( (BUTTON *)GOLFindObject( ID_BOTTOM_RIGHT ), BTN_DRAW ); SetState( (BUTTON *)GOLFindObject( ID_BOTTOM_LEFT ), BTN_PRESSED | BTN_DRAW ); } break; case SCAN_UP_RELEASED: break; case SCAN_DOWN_RELEASED: break; case SCAN_RIGHT_RELEASED: break; case SCAN_LEFT_RELEASED: break; case SCAN_CR_PRESSED: if (GetState( (BUTTON *)GOLFindObject( ID_TOP_LEFT ), BTN_PRESSED )) { pMsg->param1 = ID_TOP_LEFT; } else if (GetState( (BUTTON *)GOLFindObject( ID_BOTTOM_LEFT ), BTN_PRESSED )) { pMsg->param1 = ID_BOTTOM_LEFT; } else if (GetState( (BUTTON *)GOLFindObject( ID_TOP_RIGHT ), BTN_PRESSED )) { pMsg->param1 = ID_TOP_RIGHT; } else if (GetState( (BUTTON *)GOLFindObject( ID_BOTTOM_RIGHT ), BTN_PRESSED )) { pMsg->param1 = ID_BOTTOM_RIGHT; } else if (GetState( (BUTTON *)GOLFindObject( ID_THIRDROW ), BTN_PRESSED )) { pMsg->param1 = ID_THIRDROW; } break; case SCAN_CR_RELEASED: if (GetState( (BUTTON *)GOLFindObject( ID_TOP_LEFT ), BTN_PRESSED )) { pMsg->param1 = ID_TOP_LEFT; } else if (GetState( (BUTTON *)GOLFindObject( ID_BOTTOM_LEFT ), BTN_PRESSED )) { pMsg->param1 = ID_BOTTOM_LEFT; } else if (GetState( (BUTTON *)GOLFindObject( ID_TOP_RIGHT ), BTN_PRESSED )) { pMsg->param1 = ID_TOP_RIGHT; } else if (GetState( (BUTTON *)GOLFindObject( ID_BOTTOM_RIGHT ), BTN_PRESSED )) { pMsg->param1 = ID_BOTTOM_RIGHT; } else if (GetState( (BUTTON *)GOLFindObject( ID_THIRDROW ), BTN_PRESSED )) { pMsg->param1 = ID_THIRDROW; } break; } } }
/***************************************************************************** * void CreateSecurityScreen(void) *****************************************************************************/ void CreateSecurityScreen(void) { GOL_SCHEME *currentScheme; currentScheme = GFX_SchemeGetCurrentScheme(); CreatePanelScreen(); // This adds the widgets seen on the left of the screen SetState(GOLFindObject(PANEL_SCREEN_ID_SECURITY_BUT), BTN_DISABLED); if(GetState(GOLFindObject(PANEL_SCREEN_ID_COMFORT_BUT),BTN_DISABLED)) { ClrState(GOLFindObject(PANEL_SCREEN_ID_COMFORT_BUT), BTN_DISABLED); SetState(GOLFindObject(PANEL_SCREEN_ID_COMFORT_BUT),BTN_DRAW); } if(GetState(GOLFindObject(PANEL_SCREEN_ID_LIGHTING_BUT),BTN_DISABLED)) { ClrState(GOLFindObject(PANEL_SCREEN_ID_LIGHTING_BUT), BTN_DISABLED); SetState(GOLFindObject(PANEL_SCREEN_ID_LIGHTING_BUT),BTN_DRAW); } if(GetState(GOLFindObject(PANEL_SCREEN_ID_ENERGY_USAGE_BUT),BTN_DISABLED)) { ClrState(GOLFindObject(PANEL_SCREEN_ID_ENERGY_USAGE_BUT), BTN_DISABLED); SetState(GOLFindObject(PANEL_SCREEN_ID_ENERGY_USAGE_BUT),BTN_DRAW); } SetFont((void *) &FONTDEFAULT); SetColor(WHITE); OutTextXY(SECURITY_EB_ORIGIN_X + 70,SECURITY_EB_ORIGIN_Y -25, (XCHAR *)EnterPINStr); OutTextXY(SECURITY_BUTTON_ORIGIN,SECURITY_EB_ORIGIN_Y -25, (XCHAR *)SecurityOptionsStr); BtnCreate //Disarmed ( SERCURITY_SCREEN_ID_DISARMED_BUT, // button ID SECURITY_BUTTON_ORIGIN, SECURITY_EB_ORIGIN_Y, SECURITY_BUTTON_ORIGIN + (SECURITY_KEYSIZEX << 1), SECURITY_EB_ORIGIN_Y + 1 * SECURITY_KEYSIZEY, // dimension 5, // set radius BTN_DRAW, // draw a beveled button NULL, // no bitmap (XCHAR *)DisarmedStr, // "Button", // text currentScheme ); BtnCreate //Armed ( SERCURITY_SCREEN_ID_ARMED_BUT, // button ID SECURITY_BUTTON_ORIGIN, SECURITY_EB_ORIGIN_Y + 1 * SECURITY_KEYSIZEY + 3, SECURITY_BUTTON_ORIGIN + (SECURITY_KEYSIZEX << 1), SECURITY_EB_ORIGIN_Y + 2 * SECURITY_KEYSIZEY, // dimension 5, // set radius BTN_DRAW, // draw a beveled button NULL, // no bitmap (XCHAR *)ArmedStr, // "Button", // text currentScheme ); BtnCreate //Sleeping ( SERCURITY_SCREEN_ID_SLEEPING_BUT, // button ID SECURITY_BUTTON_ORIGIN, SECURITY_EB_ORIGIN_Y + 2 * SECURITY_KEYSIZEY +3, SECURITY_BUTTON_ORIGIN + (SECURITY_KEYSIZEX << 1), SECURITY_EB_ORIGIN_Y + 3 * SECURITY_KEYSIZEY, // dimension 5, // set radius BTN_DRAW, // draw a beveled button NULL, // no bitmap (XCHAR *)SleepingStr, // "Button", // text currentScheme ); BtnCreate //Vacation ( SERCURITY_SCREEN_ID_VACATION_BUT, // button ID SECURITY_BUTTON_ORIGIN, SECURITY_EB_ORIGIN_Y + 3 * SECURITY_KEYSIZEY +3, SECURITY_BUTTON_ORIGIN + (SECURITY_KEYSIZEX << 1), SECURITY_EB_ORIGIN_Y + 4 * SECURITY_KEYSIZEY, // dimension 5, // set radius BTN_DRAW, // draw a beveled button NULL, // no bitmap (XCHAR *)VacationStr, // "Button", // text currentScheme ); BtnCreate //Entertaining ( SERCURITY_SCREEN_ID_ENTERTAINING_BUT, // button ID SECURITY_BUTTON_ORIGIN, SECURITY_EB_ORIGIN_Y + 4 * SECURITY_KEYSIZEY +3, SECURITY_BUTTON_ORIGIN + (SECURITY_KEYSIZEX << 1), SECURITY_EB_ORIGIN_Y + 5 * SECURITY_KEYSIZEY, // dimension 5, // set radius BTN_DRAW, // draw a beveled button NULL, // no bitmap (XCHAR *)EntertainingStr, // "Button", // text currentScheme ); EbCreate ( SERCURITY_SCREEN_ID_CODE_EDIT_BOX, // ID SECURITY_KEYSTARTX+5, SECURITY_KEYSTARTY + 1, SECURITY_KEYSTARTX + (3 * SECURITY_KEYSIZEX)-5, SECURITY_KEYSTARTY + 1 * SECURITY_KEYSIZEY - GOL_EMBOSS_SIZE, // dimension EB_DRAW | EB_CARET | EB_FOCUSED, // will be dislayed after creation NULL, 17, currentScheme ); // default GOL scheme BtnCreate ( SERCURITY_SCREEN_ID_KEYPAD_0_BUT, // ID SECURITY_KEYSTARTX + 1 * SECURITY_KEYSIZEX, SECURITY_KEYSTARTY + 4 * SECURITY_KEYSIZEY, SECURITY_KEYSTARTX + 2 * SECURITY_KEYSIZEX, SECURITY_KEYSTARTY + 5 * SECURITY_KEYSIZEY, // dimension 5, BTN_DRAW, // will be dislayed after creation NULL, // no bitmap padNumbers[0], // text currentScheme ); // alternative GOL scheme BtnCreate ( SERCURITY_SCREEN_ID_KEYPAD_1_BUT, // ID SECURITY_KEYSTARTX + 0 * SECURITY_KEYSIZEX, SECURITY_KEYSTARTY + 1 * SECURITY_KEYSIZEY, SECURITY_KEYSTARTX + 1 * SECURITY_KEYSIZEX, SECURITY_KEYSTARTY + 2 * SECURITY_KEYSIZEY, // dimension 5, BTN_DRAW, // will be dislayed after creation NULL, // no bitmap padNumbers[1], // text currentScheme ); // alternative GOL scheme BtnCreate ( SERCURITY_SCREEN_ID_KEYPAD_2_BUT, // ID SECURITY_KEYSTARTX + 1 * SECURITY_KEYSIZEX, SECURITY_KEYSTARTY + 1 * SECURITY_KEYSIZEY, SECURITY_KEYSTARTX + 2 * SECURITY_KEYSIZEX, SECURITY_KEYSTARTY + 2 * SECURITY_KEYSIZEY, // dimension 5, BTN_DRAW, // will be dislayed after creation NULL, // no bitmap padNumbers[2], // text currentScheme ); // alternative GOL scheme BtnCreate ( SERCURITY_SCREEN_ID_KEYPAD_3_BUT, // ID SECURITY_KEYSTARTX + 2 * SECURITY_KEYSIZEX, SECURITY_KEYSTARTY + 1 * SECURITY_KEYSIZEY, SECURITY_KEYSTARTX + 3 * SECURITY_KEYSIZEX, SECURITY_KEYSTARTY + 2 * SECURITY_KEYSIZEY, // dimension 5, BTN_DRAW, // will be dislayed after creation NULL, // no bitmap padNumbers[3], // text currentScheme ); // alternative GOL scheme BtnCreate ( SERCURITY_SCREEN_ID_KEYPAD_4_BUT, // ID SECURITY_KEYSTARTX + 0 * SECURITY_KEYSIZEX, SECURITY_KEYSTARTY + 2 * SECURITY_KEYSIZEY, SECURITY_KEYSTARTX + 1 * SECURITY_KEYSIZEX, SECURITY_KEYSTARTY + 3 * SECURITY_KEYSIZEY, // dimension 5, BTN_DRAW, // will be dislayed after creation NULL, // no bitmap padNumbers[4], // text currentScheme ); // alternative GOL scheme BtnCreate ( SERCURITY_SCREEN_ID_KEYPAD_5_BUT, // ID SECURITY_KEYSTARTX + 1 * SECURITY_KEYSIZEX, SECURITY_KEYSTARTY + 2 * SECURITY_KEYSIZEY, SECURITY_KEYSTARTX + 2 * SECURITY_KEYSIZEX, SECURITY_KEYSTARTY + 3 * SECURITY_KEYSIZEY, // dimension 5, BTN_DRAW, // will be dislayed after creation NULL, // no bitmap padNumbers[5], // text currentScheme ); // alternative GOL scheme BtnCreate ( SERCURITY_SCREEN_ID_KEYPAD_6_BUT, // ID SECURITY_KEYSTARTX + 2 * SECURITY_KEYSIZEX, SECURITY_KEYSTARTY + 2 * SECURITY_KEYSIZEY, SECURITY_KEYSTARTX + 3 * SECURITY_KEYSIZEX, SECURITY_KEYSTARTY + 3 * SECURITY_KEYSIZEY, // dimension 5, BTN_DRAW, // will be dislayed after creation NULL, // no bitmap padNumbers[6], // text currentScheme ); // alternative GOL scheme BtnCreate ( SERCURITY_SCREEN_ID_KEYPAD_7_BUT, // ID SECURITY_KEYSTARTX + 0 * SECURITY_KEYSIZEX, SECURITY_KEYSTARTY + 3 * SECURITY_KEYSIZEY, SECURITY_KEYSTARTX + 1 * SECURITY_KEYSIZEX, SECURITY_KEYSTARTY + 4 * SECURITY_KEYSIZEY, // dimension 5, BTN_DRAW, // will be dislayed after creation NULL, // no bitmap padNumbers[7], // text currentScheme ); // alternative GOL scheme BtnCreate ( SERCURITY_SCREEN_ID_KEYPAD_8_BUT, // ID SECURITY_KEYSTARTX + 1 * SECURITY_KEYSIZEX, SECURITY_KEYSTARTY + 3 * SECURITY_KEYSIZEY, SECURITY_KEYSTARTX + 2 * SECURITY_KEYSIZEX, SECURITY_KEYSTARTY + 4 * SECURITY_KEYSIZEY, // dimension 5, BTN_DRAW, // will be dislayed after creation NULL, // no bitmap padNumbers[8], // text currentScheme ); // alternative GOL scheme BtnCreate ( SERCURITY_SCREEN_ID_KEYPAD_9_BUT, // ID SECURITY_KEYSTARTX + 2 * SECURITY_KEYSIZEX, SECURITY_KEYSTARTY + 3 * SECURITY_KEYSIZEY, SECURITY_KEYSTARTX + 3 * SECURITY_KEYSIZEX, SECURITY_KEYSTARTY + 4 * SECURITY_KEYSIZEY, // dimension 5, BTN_DRAW, // will be dislayed after creation NULL, // no bitmap padNumbers[9], // text currentScheme ); // alternative GOL scheme BtnCreate ( SERCURITY_SCREEN_ID_CLEAR_BUT, // ID SECURITY_KEYSTARTX + 0 * SECURITY_KEYSIZEX, SECURITY_KEYSTARTY + 4 * SECURITY_KEYSIZEY, SECURITY_KEYSTARTX + 1 * SECURITY_KEYSIZEX, SECURITY_KEYSTARTY + 5 * SECURITY_KEYSIZEY, // dimension 5, BTN_DRAW, // will be dislayed after creation NULL, // no bitmap (XCHAR *)ClearStr, // text currentScheme ); // alternative GOL scheme BtnCreate ( SERCURITY_SCREEN_ID_ENTER_BUT, // ID SECURITY_KEYSTARTX + 2 * SECURITY_KEYSIZEX, SECURITY_KEYSTARTY + 4 * SECURITY_KEYSIZEY, SECURITY_KEYSTARTX + 3 * SECURITY_KEYSIZEX, SECURITY_KEYSTARTY + 5 * SECURITY_KEYSIZEY, // dimension 5, BTN_DRAW, // will be dislayed after creation NULL, // no bitmap (XCHAR *)EnterStr, // text currentScheme ); // alternative GOL scheme }
/**************************************************************************** Function: void TranslateMessageGeneric( GOL_MSG* msg ) Description: This function translates the keypad message into the appropriate message for a generic, 4-button menu screen. It can be used as the message processing function for any generic screen. Precondition: None Parameters: GOL_MSG * msg - The current message information Returns: None Remarks: None ***************************************************************************/ void TranslateMessageGeneric( GOL_MSG * pMsg ) { if ((pMsg->uiEvent == EVENT_KEYSCAN) && (pMsg->type == TYPE_KEYBOARD) && (pMsg->param1 == ID_ACCELEROMETER_PAD)) { switch (pMsg->param2) { case SCAN_UP_PRESSED: if (GetState( (BUTTON *)GOLFindObject( ID_BOTTOM_LEFT ), BTN_PRESSED )) { ClrState( (BUTTON *)GOLFindObject( ID_BOTTOM_LEFT ), BTN_PRESSED ); SetState( (BUTTON *)GOLFindObject( ID_BOTTOM_LEFT ), BTN_DRAW ); SetState( (BUTTON *)GOLFindObject( ID_TOP_LEFT ), BTN_PRESSED | BTN_DRAW ); } else if (GetState( (BUTTON *)GOLFindObject( ID_BOTTOM_RIGHT ), BTN_PRESSED )) { if(screenState != SCREEN_GAMES) { ClrState( (BUTTON *)GOLFindObject( ID_BOTTOM_RIGHT ), BTN_PRESSED ); SetState( (BUTTON *)GOLFindObject( ID_BOTTOM_RIGHT ), BTN_DRAW ); SetState( (BUTTON *)GOLFindObject( ID_TOP_RIGHT ), BTN_PRESSED | BTN_DRAW ); } } break; case SCAN_DOWN_PRESSED: if (GetState( (BUTTON *)GOLFindObject( ID_TOP_LEFT ), BTN_PRESSED )) { ClrState( (BUTTON *)GOLFindObject( ID_TOP_LEFT ), BTN_PRESSED ); SetState( (BUTTON *)GOLFindObject( ID_TOP_LEFT ), BTN_DRAW ); SetState( (BUTTON *)GOLFindObject( ID_BOTTOM_LEFT ), BTN_PRESSED | BTN_DRAW ); } else if (GetState( (BUTTON *)GOLFindObject( ID_TOP_RIGHT ), BTN_PRESSED )) { if(screenState != SCREEN_GAMES) { ClrState( (BUTTON *)GOLFindObject( ID_TOP_RIGHT ), BTN_PRESSED ); SetState( (BUTTON *)GOLFindObject( ID_TOP_RIGHT ), BTN_DRAW ); SetState( (BUTTON *)GOLFindObject( ID_BOTTOM_RIGHT ), BTN_PRESSED | BTN_DRAW ); } } break; case SCAN_RIGHT_PRESSED: if (GetState( (BUTTON *)GOLFindObject( ID_TOP_LEFT ), BTN_PRESSED )) { if(screenState != SCREEN_GAMES) { ClrState( (BUTTON *)GOLFindObject( ID_TOP_LEFT ), BTN_PRESSED ); SetState( (BUTTON *)GOLFindObject( ID_TOP_LEFT ), BTN_DRAW ); SetState( (BUTTON *)GOLFindObject( ID_TOP_RIGHT ), BTN_PRESSED | BTN_DRAW ); } } else if (GetState( (BUTTON *)GOLFindObject( ID_BOTTOM_LEFT ), BTN_PRESSED )) { ClrState( (BUTTON *)GOLFindObject( ID_BOTTOM_LEFT ), BTN_PRESSED ); SetState( (BUTTON *)GOLFindObject( ID_BOTTOM_LEFT ), BTN_DRAW ); SetState( (BUTTON *)GOLFindObject( ID_BOTTOM_RIGHT ), BTN_PRESSED | BTN_DRAW ); } break; case SCAN_LEFT_PRESSED: if (GetState( (BUTTON *)GOLFindObject( ID_TOP_RIGHT ), BTN_PRESSED )) { if(screenState != SCREEN_GAMES) { ClrState( (BUTTON *)GOLFindObject( ID_TOP_RIGHT ), BTN_PRESSED ); SetState( (BUTTON *)GOLFindObject( ID_TOP_RIGHT ), BTN_DRAW ); SetState( (BUTTON *)GOLFindObject( ID_TOP_LEFT ), BTN_PRESSED | BTN_DRAW ); } } else if (GetState( (BUTTON *)GOLFindObject( ID_BOTTOM_RIGHT ), BTN_PRESSED )) { ClrState( (BUTTON *)GOLFindObject( ID_BOTTOM_RIGHT ), BTN_PRESSED ); SetState( (BUTTON *)GOLFindObject( ID_BOTTOM_RIGHT ), BTN_DRAW ); SetState( (BUTTON *)GOLFindObject( ID_BOTTOM_LEFT ), BTN_PRESSED | BTN_DRAW ); } break; case SCAN_UP_RELEASED: break; case SCAN_DOWN_RELEASED: break; case SCAN_RIGHT_RELEASED: break; case SCAN_LEFT_RELEASED: break; case SCAN_CR_PRESSED: if (GetState( (BUTTON *)GOLFindObject( ID_TOP_LEFT ), BTN_PRESSED )) { pMsg->param1 = ID_TOP_LEFT; } else if (GetState( (BUTTON *)GOLFindObject( ID_BOTTOM_LEFT ), BTN_PRESSED )) { pMsg->param1 = ID_BOTTOM_LEFT; } else if (GetState( (BUTTON *)GOLFindObject( ID_TOP_RIGHT ), BTN_PRESSED )) { if(screenState != SCREEN_GAMES) pMsg->param1 = ID_TOP_RIGHT; } else if (GetState( (BUTTON *)GOLFindObject( ID_BOTTOM_RIGHT ), BTN_PRESSED )) { pMsg->param1 = ID_BOTTOM_RIGHT; } break; case SCAN_CR_RELEASED: if (GetState( (BUTTON *)GOLFindObject( ID_TOP_LEFT ), BTN_PRESSED )) { pMsg->param1 = ID_TOP_LEFT; } else if (GetState( (BUTTON *)GOLFindObject( ID_BOTTOM_LEFT ), BTN_PRESSED )) { pMsg->param1 = ID_BOTTOM_LEFT; } else if (GetState( (BUTTON *)GOLFindObject( ID_TOP_RIGHT ), BTN_PRESSED )) { if(screenState != SCREEN_GAMES) pMsg->param1 = ID_TOP_RIGHT; } else if (GetState( (BUTTON *)GOLFindObject( ID_BOTTOM_RIGHT ), BTN_PRESSED )) { pMsg->param1 = ID_BOTTOM_RIGHT; } break; case SCAN_CRA_PRESSED: if (GetState( (BUTTON *)GOLFindObject( ID_TOP_LEFT ), BTN_PRESSED )) { pMsg->param1 = ID_TOP_LEFT; } else if (GetState( (BUTTON *)GOLFindObject( ID_BOTTOM_LEFT ), BTN_PRESSED )) { pMsg->param1 = ID_BOTTOM_LEFT; } else if (GetState( (BUTTON *)GOLFindObject( ID_TOP_RIGHT ), BTN_PRESSED )) { if(screenState != SCREEN_GAMES) pMsg->param1 = ID_TOP_RIGHT; } else if (GetState( (BUTTON *)GOLFindObject( ID_BOTTOM_RIGHT ), BTN_PRESSED )) { pMsg->param1 = ID_BOTTOM_RIGHT; } break; case SCAN_CRA_RELEASED: if (GetState( (BUTTON *)GOLFindObject( ID_TOP_LEFT ), BTN_PRESSED )) { pMsg->param1 = ID_TOP_LEFT; } else if (GetState( (BUTTON *)GOLFindObject( ID_BOTTOM_LEFT ), BTN_PRESSED )) { pMsg->param1 = ID_BOTTOM_LEFT; } else if (GetState( (BUTTON *)GOLFindObject( ID_TOP_RIGHT ), BTN_PRESSED )) { if(screenState != SCREEN_GAMES) pMsg->param1 = ID_TOP_RIGHT; } else if (GetState( (BUTTON *)GOLFindObject( ID_BOTTOM_RIGHT ), BTN_PRESSED )) { pMsg->param1 = ID_BOTTOM_RIGHT; } break; } } }