controller.h 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. #ifndef CONTROLLER_H
  2. #define CONTROLLER_H
  3. #include <QWheelEvent>
  4. #include "usermode.h"
  5. class ArbeitsModel;
  6. /*
  7. * Dieser Controller verwaltet die Benutzereingaben in der Arbeitsfläche der GUI
  8. */
  9. class ArbeitsController
  10. {
  11. protected:
  12. ArbeitsController(ArbeitsModel *m);
  13. ArbeitsModel *model; // Ein Zeiger auf das ArbeitsModel, welches die Daten der ArbeitsView enthält
  14. private:
  15. static ArbeitsController *controller[USERMODE_COUNT]; // Eine Liste mit allen Controller Objekten, die es gibt
  16. public:
  17. // Setzt den Controller zurück
  18. virtual void restartController();
  19. // verwaltet das drehen des Mausrades
  20. virtual void wheelEvent(QWheelEvent *e);
  21. // verwaltet das Drücken einer Maustaste
  22. virtual void mousePressEvent(QMouseEvent *e);
  23. // verwaltet das Bewegen der Maus
  24. virtual void mouseMoveEvent(QMouseEvent *e);
  25. // verwaltet das Loslassen einer Maustaste
  26. virtual void mouseReleaseEvent(QMouseEvent *e);
  27. // gibt den Controller zurück, welcher in einem Bestimmten Modus verwendet
  28. // wird
  29. // m: der Modus, bei dem der gesuchte Controller benutzt wird
  30. static ArbeitsController* getController(UserMode m);
  31. // Erstellt die Controller, welche bei den verschiedenen Modis benutzt
  32. // werden sollen
  33. // m: Das Modell, welches alle nötigen Daten vür die Arbeitsansicht enthält
  34. static void initStaticController(ArbeitsModel *m);
  35. };
  36. /*
  37. * Controller für den SELECT Modus
  38. */
  39. class HideController : public ArbeitsController
  40. {
  41. public:
  42. HideController(ArbeitsModel *m);
  43. void mouseReleaseEvent(QMouseEvent *e) override;
  44. };
  45. /*
  46. * Controller für den MOVE Modus
  47. */
  48. class MoveController : public ArbeitsController
  49. {
  50. public:
  51. MoveController(ArbeitsModel *m);
  52. void mousePressEvent(QMouseEvent *e) override;
  53. void mouseMoveEvent(QMouseEvent *e) override;
  54. private:
  55. };
  56. /*
  57. * Controller für den CUT Modus
  58. */
  59. class CutController : public ArbeitsController
  60. {
  61. public:
  62. CutController(ArbeitsModel *m);
  63. void mouseReleaseEvent(QMouseEvent *e) override;
  64. };
  65. /*
  66. * Controller für den PIPETTE_SELECT Modus
  67. */
  68. class CopyController : public ArbeitsController
  69. {
  70. public:
  71. CopyController(ArbeitsModel *m);
  72. void mouseReleaseEvent(QMouseEvent *e) override;
  73. };
  74. /*
  75. * Controller für den PIPETTE_SET Modus
  76. */
  77. class PasteController : public ArbeitsController
  78. {
  79. public:
  80. PasteController(ArbeitsModel *m);
  81. void mouseMoveEvent(QMouseEvent *e) override;
  82. void mouseReleaseEvent(QMouseEvent *e) override;
  83. };
  84. /*
  85. * Controller für den NEW Modus
  86. */
  87. class NewController : public ArbeitsController
  88. {
  89. public:
  90. NewController(ArbeitsModel *m);
  91. void mouseReleaseEvent(QMouseEvent *e) override;
  92. void restartController() override;
  93. };
  94. /*
  95. * Controller für den DELETE Modus
  96. */
  97. class DeleteController : public ArbeitsController
  98. {
  99. public:
  100. DeleteController(ArbeitsModel *m);
  101. void mousePressEvent(QMouseEvent *e) override;
  102. void mouseMoveEvent(QMouseEvent *e) override;
  103. void mouseReleaseEvent(QMouseEvent *e) override;
  104. };
  105. /*
  106. * Controller für den ZOOM_IN Modus
  107. */
  108. class ZoomInController : public ArbeitsController
  109. {
  110. public:
  111. ZoomInController(ArbeitsModel *m);
  112. void mousePressEvent(QMouseEvent *e) override;
  113. void mouseMoveEvent(QMouseEvent *e) override;
  114. void mouseReleaseEvent(QMouseEvent *e) override;
  115. };
  116. #endif // CONTROLLER_H