static void MessageProcessTimer() { // don't display messages if airspace warning dialog is active if (CommonInterface::main_window->popup != nullptr && CommonInterface::main_window->popup->Render()) // turn screen on if blanked and receive a new message ResetUserIdle(); }
gcc_visibility_default void Java_org_xcsoar_EventBridge_onKeyUp(JNIEnv *env, jclass cls, jint key_code) { if (event_queue == NULL) /* XCSoar not yet initialised */ return; event_queue->Push(Event(Event::KEY_UP, TranslateKeyCode(key_code))); ResetUserIdle(); }
gcc_visibility_default void Java_org_xcsoar_EventBridge_onPointerUp(JNIEnv *env, jclass cls) { if (event_queue == NULL) /* XCSoar not yet initialised */ return; event_queue->Push(Event(Event::POINTER_UP)); ResetUserIdle(); }
bool MainWindow::OnUser(unsigned id) { ProtectedAirspaceWarningManager *airspace_warnings; switch ((Command)id) { case Command::AIRSPACE_WARNING: airspace_warnings = GetAirspaceWarnings(); if (!airspace_warning_pending || airspace_warnings == NULL) return true; airspace_warning_pending = false; if (dlgAirspaceWarningVisible()) /* already visible */ return true; /* un-blank the display, play a sound and show the dialog */ ResetUserIdle(); PlayResource(_T("IDR_WAV_BEEPBWEEP")); dlgAirspaceWarningsShowModal(*this, *airspace_warnings, true); return true; case Command::GPS_UPDATE: UIReceiveSensorData(); return true; case Command::CALCULATED_UPDATE: UIReceiveCalculatedData(); return true; case Command::RESTORE_PAGE: if (restore_page_pending) PageActions::Restore(); return true; case Command::THERMAL_NOTIFICATION: PlayResource(_T("IDR_WAV_CLEAR")); return true; #ifdef ANDROID case Command::CRASH: ShowMessageBox(_T("How embarassing, we're terribly sorry!\n" "Please submit a bug report and " "include the file from the 'crash' directory.\n" "http://bugs.xcsoar.org/newticket\n" "After your report, we'll fix it ASAP."), _T("XCSoar has crashed recently"), MB_OK|MB_ICONERROR); return true; #endif } return false; }
gcc_visibility_default void Java_org_xcsoar_EventBridge_onMouseDown(JNIEnv *env, jclass cls, jint x, jint y) { if (event_queue == NULL) /* XCSoar not yet initialised */ return; event_queue->Push(Event(Event::MOUSE_DOWN, x, y)); ResetUserIdle(); }
gcc_visibility_default void Java_org_xcsoar_EventBridge_onKeyDown(JNIEnv *env, jclass cls, jint key_code) { if (event_queue == NULL) /* XCSoar not yet initialised */ return; if (!has_cursor_keys && IsCursorKey(key_code)) /* enable this flag as soon as we see the first cursor event; used by HasCursorKeys() */ has_cursor_keys = true; event_queue->Push(Event(Event::KEY_DOWN, TranslateKeyCode(key_code))); ResetUserIdle(); }
void AirspaceWarningMonitor::Check() { const auto &calculated = CommonInterface::Calculated(); if (widget == nullptr && calculated.airspace_warnings.latest == last) return; /* there's a new airspace warning */ last = calculated.airspace_warnings.latest; auto *airspace_warnings = GetAirspaceWarnings(); if (airspace_warnings == nullptr) { HideWidget(); return; } if (!HasPointer()) { /* "classic" list-only view for devices without touch screen */ if (dlgAirspaceWarningVisible()) /* already visible */ return; // un-blank the display, play a sound ResetUserIdle(); PlayResource(_T("IDR_WAV_BEEPBWEEP")); // show airspace warnings dialog if (CommonInterface::GetUISettings().enable_airspace_warning_dialog) dlgAirspaceWarningsShowModal(*airspace_warnings, true); return; } const AbstractAirspace *airspace = nullptr; AirspaceWarning::State state; AirspaceInterceptSolution solution; { const ProtectedAirspaceWarningManager::Lease lease(*airspace_warnings); auto w = lease->begin(); if (w != lease->end() && w->IsAckExpired()) { airspace = &w->GetAirspace(); state = w->GetWarningState(); solution = w->GetSolution(); } } if (airspace == nullptr) { HideWidget(); return; } if (CommonInterface::GetUISettings().enable_airspace_warning_dialog) { /* show airspace warning */ if (widget != nullptr) { if (widget->Update(*airspace, state, solution)) return; HideWidget(); } widget = new AirspaceWarningWidget(*this, *airspace_warnings, *airspace, state, solution); PageActions::SetCustomBottom(widget); } // un-blank the display, play a sound ResetUserIdle(); PlayResource(_T("IDR_WAV_BEEPBWEEP")); }
LRESULT Window::OnMessage(HWND _hWnd, UINT message, WPARAM wParam, LPARAM lParam) { switch (message) { case WM_CREATE: OnCreate(); return 0; case WM_DESTROY: OnDestroy(); return 0; case WM_SIZE: OnResize({LOWORD(lParam), HIWORD(lParam)}); return 0; case WM_MOUSEMOVE: if (OnMouseMove(GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam), wParam)) return 0; break; case WM_LBUTTONDOWN: if (OnMouseDown(GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam))) { /* true returned: message was handled */ ResetUserIdle(); return 0; } break; case WM_LBUTTONUP: if (OnMouseUp(GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam))) { /* true returned: message was handled */ ResetUserIdle(); return 0; } break; case WM_LBUTTONDBLCLK: if (!double_clicks) /* instead of disabling CS_DBLCLKS (which would affect all instances of a window class), we just translate WM_LBUTTONDBLCLK to WM_LBUTTONDOWN here; this even works for built-in window class such as BUTTON */ return OnMessage(_hWnd, WM_LBUTTONDOWN, wParam, lParam); if (OnMouseDouble(GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam))) { /* true returned: message was handled */ ResetUserIdle(); return 0; } break; #ifdef WM_MOUSEWHEEL case WM_MOUSEWHEEL: if (OnMouseWheel(GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam), GET_WHEEL_DELTA_WPARAM(wParam))) { /* true returned: message was handled */ ResetUserIdle(); return 0; } break; #endif case WM_KEYDOWN: if (OnKeyDown(wParam)) { /* true returned: message was handled */ ResetUserIdle(); return 0; } break; case WM_KEYUP: if (OnKeyUp(wParam)) { /* true returned: message was handled */ ResetUserIdle(); return 0; } break; case WM_CHAR: if (OnCharacter((TCHAR)wParam)) /* true returned: message was handled */ return 0; break; case WM_COMMAND: if (OnCommand(LOWORD(wParam), HIWORD(wParam))) { /* true returned: message was handled */ ResetUserIdle(); return 0; } break; case WM_CANCELMODE: OnCancelMode(); /* pass on to DefWindowProc(), there may be more to do */ break; case WM_SETFOCUS: OnSetFocus(); /* pass on to DefWindowProc() so the underlying window class knows it's focused */ break; case WM_KILLFOCUS: OnKillFocus(); /* pass on to DefWindowProc() so the underlying window class knows it's not focused anymore */ break; case WM_TIMER: if (OnTimer(*(WindowTimer *)wParam)) return 0; break; case WM_PAINT: if (custom_painting) { PaintCanvas canvas(*this); OnPaint(canvas, canvas.get_dirty()); return 0; } break; case WM_GETDLGCODE: if (OnKeyCheck(wParam)) return DLGC_WANTMESSAGE; break; } if (message >= WM_USER && message <= 0x7FFF && OnUser(message - WM_USER)) return 0; return OnUnhandledMessage(_hWnd, message, wParam, lParam); }