void HandleEvent(IntPtr eventHandle)
{
var e = ScreenEvent.FromEventHandle (eventHandle);
if (e.Type == EventType.SCREEN_EVENT_CLOSE ||
e.Type == EventType.SCREEN_EVENT_CREATE) {
if (HandleWindowEvent (e) ) {
return;
}
}
switch (e.Type) {
case EventType.SCREEN_EVENT_CLOSE:
if (OnCloseWindow != null) {
OnCloseWindow (e);
}
break;
case EventType.SCREEN_EVENT_CREATE:
if (OnCreateWindow != null) {
OnCreateWindow (e);
}
break;
case EventType.SCREEN_EVENT_MTOUCH_TOUCH:
if (OnFingerTouch != null) {
OnFingerTouch (e.X, e.Y);
}
break;
case EventType.SCREEN_EVENT_MTOUCH_MOVE:
if (OnFingerMove != null) {
OnFingerMove (e.X, e.Y);
}
break;
case EventType.SCREEN_EVENT_MTOUCH_RELEASE:
if (OnFingerRelease != null) {
OnFingerRelease (e.X, e.Y);
}
break;
case EventType.SCREEN_EVENT_KEYBOARD:
if (OnKeyDown == null && OnKeyRepeat == null && OnKeyUp == null) {
break;
}
KeyFlags flags = (KeyFlags)e.GetIntProperty (Property.SCREEN_PROPERTY_KEY_FLAGS);
KeyCode code = (KeyCode)e.GetIntProperty (Property.SCREEN_PROPERTY_KEY_SYM);
KeyModifiers mods = (KeyModifiers)e.GetIntProperty (Property.SCREEN_PROPERTY_KEY_MODIFIERS);
if (flags.HasFlag (KeyFlags.KEY_DOWN) && OnKeyDown != null) {
OnKeyDown (code, mods);
} else if (flags.HasFlag (KeyFlags.KEY_REPEAT) && OnKeyRepeat != null) {
OnKeyRepeat (code, mods);
} else if (OnKeyUp != null) {
OnKeyUp (code, mods);
}
break;
default:
Console.WriteLine ("UNHANDLED SCREEN EVENT, TYPE: {0}", e.Type);
if (e.Type == EventType.SCREEN_EVENT_PROPERTY) {
Console.WriteLine (" - Name: {0}", (Property)e.GetIntProperty (Property.SCREEN_PROPERTY_NAME));
} else if (e.Type == EventType.SCREEN_EVENT_DEVICE ||
e.Type == EventType.SCREEN_EVENT_GAMEPAD ||
e.Type == EventType.SCREEN_EVENT_JOYSTICK ||
e.Type == EventType.SCREEN_EVENT_POINTER) {
Console.WriteLine (" - Buttons: {0}", e.GetIntProperty (Property.SCREEN_PROPERTY_BUTTONS));
}
break;
}
}