Boolean CCXEGLView::EventHandler(TApplication * pApp, EventType * pEvent)
{
    Boolean bHandled = FALSE;

    switch(pEvent->eType)
    {
    case EVENT_WinInit:
        CfgRegisterScreenSwitchNotify(GetWindowHwndId(), 0);
        bHandled = TRUE;
        break;

    case EVENT_WinPaint:
        if (CfgGetScreenStatus())
        {
            // draw 
            CCDirector::sharedDirector()->mainLoop();
        }
        bHandled = TRUE;
        break;

    case EVENT_PenDown:
        bHandled = OnPenDown(pEvent, 0);
        break;

    case EVENT_PenMove:
        bHandled = OnPenMove(pEvent);
        break;

    case EVENT_PenUp:
        bHandled = OnPenUp(pEvent, 0);
        break;

    case EVENT_MultiTouchDown:
        bHandled = OnPenDown(pEvent, pEvent->lParam3);
        break;

    case EVENT_MultiTouchUp:
        bHandled = OnPenUp(pEvent, pEvent->lParam3);
        break;

    case EVENT_KeyCommand:
        {
            if (pEvent->sParam1 == SYS_KEY_SOFTKEY_RIGHT_UP ||
                pEvent->sParam1 == SYS_KEY_SOFTKEY_RIGHT_LONG)
            {
                bHandled = CCKeypadDispatcher::sharedDispatcher()->dispatchKeypadMSG(kTypeBackClicked);
            }
            else if (pEvent->sParam1 == SYS_KEY_SOFTKEY_LEFT_UP ||
                     pEvent->sParam1 == SYS_KEY_SOFTKEY_LEFT_LONG)
            {
                bHandled = CCKeypadDispatcher::sharedDispatcher()->dispatchKeypadMSG(kTypeMenuClicked);
            }
        }
        break;

    case MESSAGE_SENSORS_DATA:
        {
            TG3SensorsDataType	data;

            if (Sys_GetMessageBody((MESSAGE_t *)pEvent, &data, sizeof(TG3SensorsDataType)) == sizeof(TG3SensorsDataType) &&
                TG3_SENSOR_TYPE_ACCELEROMETER == data.sensorMask)
            {
                // convert the data to iphone format
                UIAcceleration AccValue;
                AccValue.x = -(data.acceleration.x / TG3_GRAVITY_EARTH);
                AccValue.y = -(data.acceleration.y / TG3_GRAVITY_EARTH);
                AccValue.z = -(data.acceleration.z / TG3_GRAVITY_EARTH);
                AccValue.timestamp = (double) TimGetTicks() / 100;

                // call delegates' didAccelerate function
                UIAccelerometer::sharedAccelerometer()->didAccelerate(&AccValue);
                bHandled = TRUE;
            }
        }
        break;

    case EVENT_WinClose:
        CfgUnRegisterScreenSwitchNotify(GetWindowHwndId(), 0);
        // Stop the application since the main form has been closed
        pApp->SendStopEvent();
        break;

    case EVENT_ScreenSwitchNotify:
        {
            bool bInBack = CCXApplication::sharedApplication()->isInBackground();

            // if the app have be in background,don't handle this message
            CCX_BREAK_IF(bInBack);

            if (! pEvent->sParam1)  // turn off screen
            {
                // CCDirector::sharedDirector()->pause();
                CCXApplication::sharedApplication()->applicationDidEnterBackground();
                CCXApplication::sharedApplication()->StopMainLoop();
            }
            else
            {
                // CCDirector::sharedDirector()->resume();
                CCXApplication::sharedApplication()->applicationWillEnterForeground();
                CCXApplication::sharedApplication()->StartMainLoop();
            }
            break;
        }

    }
//     {
//         char szType[32];
//         sprintf(szType, "%d", pEvent->eType);
//         const char * pszType = szType;
//         switch (pEvent->eType)
//         {
//         case EVENT_ScreenSwitchNotify:
//             pszType = "EVENT_ScreenSwitchNotify";
//             break;
// 
//         case EVENT_GlesUpdateNotify:
//             pszType = "EVENT_GlesUpdateNotify";
//             break;
// 
//         case EVENT_WinPaint:
//             pszType = "EVENT_GlesUpdateNotify";
//             break;
//         }
//         if (pszType)
//         {
//             char szMsg[256];
//             sprintf(szMsg, "%d: %s: %d \r\n", TimGetTicks(), pszType, pEvent->sParam1);
// #if defined (_TRANZDA_VM_)
// #define LOG_FILE_NAME "d:/Work7/NEWPLUS/TDA_DATA/UserData/mesagelog.txt"
// #else
// #define LOG_FILE_NAME "/NEWPLUS/TDA_DATA/UserData/mesagelog.txt"
// #endif
//             FILE * pf = fopen(LOG_FILE_NAME, "a+");
//             fwrite(szMsg, 1, strlen(szMsg), pf);
//             fclose(pf);
//         }
//     }

    if (! bHandled)
    {
        return TWindow::EventHandler(pApp, pEvent);
    }
    return bHandled;
}
Esempio n. 2
0
bool SimUIForm::FingerHandler::OnPenEvent(Event *pevt, bool fScrollOnly) {
#if 0
    switch (pevt->eType) {
    case penDownEvent:
        IPhone::Log("penDownEvent x=%d y=%d", pevt->x, pevt->y);
        break;

    case penDownEvent2:
        IPhone::Log("penDownEvent2 x=%d y=%d", pevt->x, pevt->y);
        break;

    case penUpEvent:
        IPhone::Log("penUpEvent x=%d y=%d", pevt->x, pevt->y);
        break;

    case penUpEvent2:
        IPhone::Log("penUpEvent2 x=%d y=%d", pevt->x, pevt->y);
        break;

    case penMoveEvent:
        IPhone::Log("penMoveEvent x=%d y=%d", pevt->x, pevt->y);
        break;

    case penMoveEvent2:
        IPhone::Log("penMoveEvent2 x=%d y=%d", pevt->x, pevt->y);
        break;

    case penHoldEvent:
        IPhone::Log("penHoldEvent x=%d y=%d", pevt->x, pevt->y);
        break;
    }
#endif

    switch (pevt->eType) {
    case penDownEvent:
        OnPenDown(pevt, fScrollOnly);
        break;

    case penDownEvent2:
        OnPenDown2(pevt, fScrollOnly);
        break;

    case penUpEvent:
        OnPenUp(pevt, fScrollOnly);
        break;

    case penUpEvent2:
        OnPenUp2(pevt, fScrollOnly);
        break;

    case penMoveEvent:
        OnPenMove(pevt);
        break;

    case penMoveEvent2:
        OnPenMove2(pevt);
        break;

    case penHoldEvent:
        OnPenHold(pevt);
        break;

    default:
        return false;
    }
    return true;
}