/********************************************************************* * * BUTTON_SetPressed */ void BUTTON_SetPressed(BUTTON_Handle hObj, int State) { if (State) { WIDGET_OrState(hObj, BUTTON_STATE_PRESSED); } else { WIDGET_AndState(hObj, BUTTON_STATE_PRESSED); } }
/********************************************************************* * * BUTTON_SetFocussable */ void BUTTON_SetFocussable(BUTTON_Handle hObj, int State) { if (State) { WIDGET_OrState(hObj, WIDGET_STATE_FOCUSSABLE); } else { WIDGET_AndState(hObj, WIDGET_STATE_FOCUSSABLE); } }
/********************************************************************* * * xCreateDialogBoxArray */ WM_HWIN xCreateDialogBoxArray(const xDIALOGBOX_Obj* paDialogBox, int NumDialogBox, WM_CALLBACK* cb, WM_HWIN hParent, int x0, int y0) { WM_HWIN hDialog; WM_HWIN hDialogClient; if((NumDialogBox <= 0) || (paDialogBox==NULL) || (paDialogBox->paWidget->pfCreateIndirect==NULL) )return 0; //Creat Parent Window DEBUGOUT("xCreateDialogBoxArray: Create Parent Win\r\n"); hDialog = paDialogBox->paWidget->pfCreateIndirect(paDialogBox->paWidget, hParent, x0, y0, cb); /* Create parent window */ hDialogClient = WM_GetClientWindow(hDialog); WIDGET_OrState(hDialog, paDialogBox->paWidget->Flags); WM_ShowWindow(hDialog); WM_ShowWindow(hDialogClient); while (--NumDialogBox > 0) { WM_HWIN hChildDialog; paDialogBox++; DEBUGOUT("xCreateDialogBoxArray: Create Child DownCounter:%d\r\n", NumDialogBox); hChildDialog = GUI_CreateDialogBox(paDialogBox->paWidget, paDialogBox->NumWidgets, paDialogBox->cb, hDialogClient, 0, 0); /* Create child Dialog */ WM_ShowWindow(hChildDialog); } DEBUGOUT("xCreateDialogBoxArray: Create Child DownCounter:%d\r\n", NumDialogBox); DEBUGOUT("xCreateDialogBoxArray: Create Child OK\r\n", NumDialogBox); WM_SetFocusOnNextChild(hDialog); /* Set the focus to the first child */ WM_SendMessageNoPara(hDialogClient, WM_INIT_DIALOG); return hDialog; }
/********************************************************************* * * GUI_CreateDialogbox */ WM_HWIN GUI_CreateDialogBox(const GUI_WIDGET_CREATE_INFO* paWidget, int NumWidgets, WM_CALLBACK* cb, WM_HWIN hParent, int x0, int y0) { WM_HWIN hDialog, hDialogClient; hDialog = paWidget->pfCreateIndirect(paWidget, hParent, x0, y0, cb); /* Create parent window */ if (!hDialog) { return 0; } hDialogClient = WM_GetClientWindow(hDialog); WIDGET_OrState(hDialog, paWidget->Flags); WM_ShowWindow(hDialog); WM_ShowWindow(hDialogClient); while (--NumWidgets > 0) { WM_HWIN hChild; paWidget++; hChild = paWidget->pfCreateIndirect(paWidget, hDialogClient, 0, 0, 0); /* Create child window */ if (!hChild) { WM_DeleteWindow(hDialog); return 0; } WM_ShowWindow(hChild); } WM_SetFocusOnNextChild(hDialog); /* Set the focus to the first child */ WM_SendMessageNoPara(hDialogClient, WM_INIT_DIALOG); return hDialog; }
/********************************************************************* * * WIDGET_HandleActive */ int WIDGET_HandleActive(WM_HWIN hObj, WM_MESSAGE* pMsg) { WM_MESSAGE Msg; WIDGET* pWidget = WIDGET_H2P(hObj); switch (pMsg->MsgId) { case WM_GET_ID: pMsg->Data.v = pWidget->Id; return 0; /* Message handled -> Return */ case WM_SET_FOCUS: if (pMsg->Data.v == 1) { WIDGET_SetState(hObj, pWidget->State | WIDGET_STATE_FOCUS); } else { WIDGET_SetState(hObj, pWidget->State & ~WIDGET_STATE_FOCUS); } Msg.MsgId = WM_NOTIFY_CHILD_HAS_FOCUS; Msg.Data.v = pMsg->Data.v; WM_SendToParent(hObj, &Msg); return 0; case WM_GET_HAS_FOCUS: pMsg->Data.v = pWidget->State & WIDGET_STATE_FOCUS; return 0; /* Message handled */ case WM_SET_ENABLE: if (pMsg->Data.v) { WIDGET_OrState(hObj, WIDGET_STATE_ENABLED); } else { WIDGET_AndState(hObj, WIDGET_STATE_ENABLED); } case WM_GET_ACCEPT_FOCUS: pMsg->Data.v = (pWidget->State & WIDGET_STATE_FOCUSSABLE) ? 1 : 0; /* Can handle focus */ return 0; /* Message handled */ case WM_GET_INSIDE_RECT: WIDGET__GetInsideRect(pWidget, (GUI_RECT*)pMsg->Data.p); return 0; /* Message handled */ } return 1; /* Message NOT handled */ }
/********************************************************************* * * _OnTouch */ static void _OnTouch(BUTTON_Handle hObj, BUTTON_Obj* pObj, WM_MESSAGE*pMsg) { int Notification; int Hit = 0; GUI_TOUCH_tState* pState = (GUI_TOUCH_tState*)pMsg->Data.p; if (pMsg->Data.p) { /* Something happened in our area (pressed or released) */ if (pState->Pressed) { WIDGET_OrState(hObj, BUTTON_STATE_PRESSED); Notification = WM_NOTIFICATION_CLICKED; WM_SetFocus(hObj); } else { Hit =1; Notification = WM_NOTIFICATION_RELEASED; WIDGET_AndState(hObj, BUTTON_STATE_PRESSED); } } else { Notification = WM_NOTIFICATION_MOVED_OUT; WIDGET_AndState(hObj, BUTTON_STATE_PRESSED); } WM_NotifyParent(hObj, Notification); if (Hit == 1) { GUI_DEBUG_LOG("BUTTON: Hit\n"); GUI_StoreKey(pObj->Widget.Id); } }
/********************************************************************* * * _OnButtonPressed */ static void _OnButtonPressed(BUTTON_Handle hObj, BUTTON_Obj* pObj) { WIDGET_OrState(hObj, BUTTON_STATE_PRESSED); if (pObj->Widget.Win.Status & WM_SF_ISVIS) { WM_NotifyParent(hObj, WM_NOTIFICATION_CLICKED); } }
/********************************************************************* * * _SliderPressed */ static void _SliderPressed(SLIDER_Handle hObj, SLIDER_Obj* pObj) { WIDGET_OrState(hObj, SLIDER_STATE_PRESSED); if (pObj->Widget.Win.Status & WM_SF_ISVIS) { WM_NotifyParent(hObj, WM_NOTIFICATION_CLICKED); } }