Ejemplo n.º 1
0
/*********************************************************************
*
*       _TouchTask
*
* Function description:
*   Handle touch screen input
*
*/
static U32 _TouchTask(T_uezTask aMyTask, void *aParameters) {


  T_uezInputEvent inputEvent;
  GUI_PID_STATE  State = { 0 };

  (void)aMyTask;
  (void)aParameters;

  while (1) {
    if (_RequestExit == 1) {
      _RequestExit = 0;
      break;
    }
    //
    // Wait for 100ms for a new touch event to occur. Else skip over to give the
    // task a chance to respond to an exit request.
    //
    if (UEZQueueReceive(_hTSQueue, &inputEvent, 100) == UEZ_ERROR_NONE) {
      if (inputEvent.iEvent.iXY.iAction == XY_ACTION_PRESS_AND_HOLD) {
        State.x       = inputEvent.iEvent.iXY.iX;
        State.y       = inputEvent.iEvent.iXY.iY;
        State.Pressed = 1;
      } else {
        State.x       = -1;
        State.y       = -1;
        State.Pressed =  0;
      }
      GUI_PID_StoreState(&State);
    }
  }
  return UEZ_ERROR_NONE;
}
/*********************************************************************
*
*       _PlayNextEvent
*/
static void _PlayNextEvent(WM_HWIN hWin) {
  static PID_EVENT * pEvent;
  static int         iList;
  static int         iEntry;
  GUI_PID_STATE      State = { 0 };

  if (pEvent) {
    GUI_PID_GetState(&State);
    if ((State.Layer == LAYER) && State.Pressed && ((State.x != pEvent->x) || (State.y != pEvent->y))) {
      WM_HWIN hItem;
      hItem = WM_GetDialogItem(hWin, GUI_ID_CHECK0);
      CHECKBOX_SetState(hItem, 0);
    }
  }
  pEvent        = _aEventList[iList].pEvent + iEntry;
  State.x       = pEvent->x;
  State.y       = pEvent->y;
  State.Pressed = pEvent->Pressed;
  State.Layer   = LAYER;
  GUI_PID_StoreState(&State);
  GUI_Delay(pEvent->Duration);
  if (++iEntry == _aEventList[iList].NumEvents) {
    iEntry = 0;
    iList++;
    if (iList == GUI_COUNTOF(_aEventList)) {
      iList = 0;
    }
  }
}
Ejemplo n.º 3
0
/*********************************************************************
*
*       GUI_MOUSE_StoreState
*/
void GUI_MOUSE_StoreState(const GUI_PID_STATE *pState) 
{
  if (memcmp(pState, &_State, sizeof(_State))) 
  {
    _State = *pState;
    GUI_PID_StoreState(pState);
  }
}
Ejemplo n.º 4
0
//............................................................................
QState Table::ready(Table *me, QEvt const *e) {
    switch (e->sig) {
        case Q_ENTRY_SIG: {
            l_cb_WM_HBKWIN = WM_SetCallback(WM_HBKWIN, &onMainWndGUI);
                            // create the diaglog box and return right away...
            l_hDlg = GUI_CreateDialogBox(l_dialog, GUI_COUNTOF(l_dialog),
                                         &onDialogGUI, 0, 0, 0);
            return Q_HANDLED();
        }
        case Q_EXIT_SIG: {
            GUI_EndDialog(l_hDlg, 0);
            WM_SetCallback(WM_HBKWIN, l_cb_WM_HBKWIN);
            return Q_HANDLED();
        }
        case Q_INIT_SIG: {
            return Q_TRAN(&Table::serving);
        }

        case MOUSE_CHANGE_SIG: {         // mouse change (move or click) event
            GUI_PID_STATE mouse;
            mouse.x = ((MouseEvt const *)e)->xPos;
            mouse.y = ((MouseEvt const *)e)->yPos;
            mouse.Pressed = ((MouseEvt const *)e)->buttonStates;

            GUI_PID_StoreState(&mouse);   // update the state of the Mouse PID

            WM_Exec();            // update the screen and invoke WM callbacks
            return Q_HANDLED();
        }

        // ... hardkey events ...
        case KEY_LEFT_REL_SIG: {                      // hardkey LEFT released
            WM_MoveWindow(l_hDlg, -5, 0);
            WM_Exec();            // update the screen and invoke WM callbacks
            return Q_HANDLED();
        }
        case KEY_RIGHT_REL_SIG: {                    // hardkey RIGHT released
            WM_MoveWindow(l_hDlg, 5, 0);
            WM_Exec();            // update the screen and invoke WM callbacks
            return Q_HANDLED();
        }
        case KEY_DOWN_REL_SIG: {                      // hardkey DOWN released
            WM_MoveWindow(l_hDlg, 0, 5);
            WM_Exec();            // update the screen and invoke WM callbacks
            return Q_HANDLED();
        }
        case KEY_UP_REL_SIG: {                          // hardkey UP released
            WM_MoveWindow(l_hDlg, 0, -5);
            WM_Exec();            // update the screen and invoke WM callbacks
            return Q_HANDLED();
        }
    }
    return Q_SUPER(&QHsm::top);
}