#ifndef VIEW_H
#define VIEW_H

#include <QWidget>
#include <QRubberBand>
#include <QMouseEvent>
#include <QPainter>
#include <QList>
#include <QTreeView>

#include "frame.h"
#include "model.h"
#include "controller.h"

/*
 * Verwaltet die Arbeitsfläche
 */
class ArbeitsView : public QWidget
{
    Q_OBJECT

private:
    ArbeitsModel * m;
    ArbeitsController *c;
    QRubberBand *selectArea;

    // Zeichnet die View neu
    void paintEvent(QPaintEvent *e) override;

public:
    explicit ArbeitsView(ArbeitsModel *model,
                  QWidget      *parent = nullptr);
    ~ArbeitsView();

    // Setzt den Controller, der die Nutzereingaben verarbeiten soll
    void setController(ArbeitsController *controller);

    // Leitet nutzereingaben an den Controller weiter
    void wheelEvent(QWheelEvent *e) override;
    // Leitet nutzereingaben an den Controller weiter
    void mouseReleaseEvent(QMouseEvent *e) override;
    // Leitet nutzereingaben an den Controller weiter
    void mousePressEvent(QMouseEvent *e) override;
    // Leitet nutzereingaben an den Controller weiter
    void mouseMoveEvent(QMouseEvent *e) override;
    // Zeigt tooltip für Objekte an
    bool event(QEvent *e) override;
};

#endif // VIEW_H
