#ifndef CONTROLLER_H #define CONTROLLER_H #include #include "usermode.h" class ArbeitsModel; /* * Dieser Controller verwaltet die Benutzereingaben in der Arbeitsfläche der GUI */ class ArbeitsController { protected: ArbeitsController(ArbeitsModel *m); ArbeitsModel *model; // Ein Zeiger auf das ArbeitsModel, welches die Daten der ArbeitsView enthält private: static ArbeitsController *controller[USERMODE_COUNT]; // Eine Liste mit allen Controller Objekten, die es gibt public: // Setzt den Controller zurück virtual void restartController(); // verwaltet das drehen des Mausrades virtual void wheelEvent(QWheelEvent *e); // verwaltet das Drücken einer Maustaste virtual void mousePressEvent(QMouseEvent *e); // verwaltet das Bewegen der Maus virtual void mouseMoveEvent(QMouseEvent *e); // verwaltet das Loslassen einer Maustaste virtual void mouseReleaseEvent(QMouseEvent *e); // gibt den Controller zurück, welcher in einem Bestimmten Modus verwendet // wird // m: der Modus, bei dem der gesuchte Controller benutzt wird static ArbeitsController* getController(UserMode m); // Erstellt die Controller, welche bei den verschiedenen Modis benutzt // werden sollen // m: Das Modell, welches alle nötigen Daten vür die Arbeitsansicht enthält static void initStaticController(ArbeitsModel *m); }; /* * Controller für den SELECT Modus */ class HideController : public ArbeitsController { public: HideController(ArbeitsModel *m); void mouseReleaseEvent(QMouseEvent *e) override; }; /* * Controller für den MOVE Modus */ class MoveController : public ArbeitsController { public: MoveController(ArbeitsModel *m); void mousePressEvent(QMouseEvent *e) override; void mouseMoveEvent(QMouseEvent *e) override; private: }; /* * Controller für den CUT Modus */ class CutController : public ArbeitsController { public: CutController(ArbeitsModel *m); void mouseReleaseEvent(QMouseEvent *e) override; }; /* * Controller für den PIPETTE_SELECT Modus */ class CopyController : public ArbeitsController { public: CopyController(ArbeitsModel *m); void mouseReleaseEvent(QMouseEvent *e) override; }; /* * Controller für den PIPETTE_SET Modus */ class PasteController : public ArbeitsController { public: PasteController(ArbeitsModel *m); void mouseMoveEvent(QMouseEvent *e) override; void mouseReleaseEvent(QMouseEvent *e) override; }; /* * Controller für den NEW Modus */ class NewController : public ArbeitsController { public: NewController(ArbeitsModel *m); void mouseReleaseEvent(QMouseEvent *e) override; void restartController() override; }; /* * Controller für den DELETE Modus */ class DeleteController : public ArbeitsController { public: DeleteController(ArbeitsModel *m); void mousePressEvent(QMouseEvent *e) override; void mouseMoveEvent(QMouseEvent *e) override; void mouseReleaseEvent(QMouseEvent *e) override; }; /* * Controller für den ZOOM_IN Modus */ class ZoomInController : public ArbeitsController { public: ZoomInController(ArbeitsModel *m); void mousePressEvent(QMouseEvent *e) override; void mouseMoveEvent(QMouseEvent *e) override; void mouseReleaseEvent(QMouseEvent *e) override; }; #endif // CONTROLLER_H