cursor_manager.h 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. #pragma once
  2. #include "cursor_mode.h"
  3. #include <QObject>
  4. #include <QString>
  5. #include <QVector3D>
  6. #include <QtGui/QCursor>
  7. class QQuickWindow;
  8. class CursorManager : public QObject {
  9. Q_OBJECT
  10. public:
  11. explicit CursorManager(QObject *parent = nullptr);
  12. [[nodiscard]] auto mode() const -> CursorMode { return m_cursor_mode; }
  13. void set_mode(CursorMode mode);
  14. void set_mode(const QString &mode);
  15. [[nodiscard]] auto mode_string() const -> QString {
  16. return CursorModeUtils::toString(m_cursor_mode);
  17. }
  18. void update_cursor_shape(QQuickWindow *window);
  19. static auto global_cursor_x(QQuickWindow *window) -> qreal;
  20. static auto global_cursor_y(QQuickWindow *window) -> qreal;
  21. [[nodiscard]] auto has_patrol_first_waypoint() const -> bool {
  22. return m_has_first_waypoint;
  23. }
  24. void set_patrol_first_waypoint(const QVector3D &waypoint);
  25. void clear_patrol_first_waypoint();
  26. [[nodiscard]] auto get_patrol_first_waypoint() const -> QVector3D {
  27. return m_first_waypoint;
  28. }
  29. signals:
  30. void mode_changed();
  31. void global_cursor_changed();
  32. private:
  33. CursorMode m_cursor_mode{CursorMode::Normal};
  34. Qt::CursorShape m_current_cursor = Qt::ArrowCursor;
  35. bool m_has_first_waypoint = false;
  36. QVector3D m_first_waypoint;
  37. };