cursor_manager.cpp 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. #include "cursor_manager.h"
  2. #include <QCursor>
  3. #include <QPoint>
  4. #include <QQuickWindow>
  5. CursorManager::CursorManager(QObject *parent) : QObject(parent) {}
  6. void CursorManager::setMode(const QString &mode) {
  7. if (m_cursorMode == mode)
  8. return;
  9. if (m_cursorMode == "patrol" && mode != "patrol") {
  10. m_hasFirstWaypoint = false;
  11. }
  12. m_cursorMode = mode;
  13. emit modeChanged();
  14. emit globalCursorChanged();
  15. }
  16. void CursorManager::updateCursorShape(QQuickWindow *window) {
  17. if (!window)
  18. return;
  19. Qt::CursorShape desiredCursor =
  20. (m_cursorMode == "normal") ? Qt::ArrowCursor : Qt::BlankCursor;
  21. if (m_currentCursor != desiredCursor) {
  22. m_currentCursor = desiredCursor;
  23. window->setCursor(desiredCursor);
  24. }
  25. }
  26. qreal CursorManager::globalCursorX(QQuickWindow *window) const {
  27. if (!window)
  28. return 0;
  29. QPoint globalPos = QCursor::pos();
  30. QPoint localPos = window->mapFromGlobal(globalPos);
  31. return localPos.x();
  32. }
  33. qreal CursorManager::globalCursorY(QQuickWindow *window) const {
  34. if (!window)
  35. return 0;
  36. QPoint globalPos = QCursor::pos();
  37. QPoint localPos = window->mapFromGlobal(globalPos);
  38. return localPos.y();
  39. }
  40. void CursorManager::setPatrolFirstWaypoint(const QVector3D &waypoint) {
  41. m_firstWaypoint = waypoint;
  42. m_hasFirstWaypoint = true;
  43. }
  44. void CursorManager::clearPatrolFirstWaypoint() { m_hasFirstWaypoint = false; }