/* * Copyright (c) 2012 Mateusz Piękos * Licensed under the simplified BSD license. * See Documentation/Licenses/BSD-simplified.txt for more information. */ #pragma once #include #include #include #include #include #include #include "TextDialog.h" #include "FreehandLineItem.h" namespace Swift { class GView : public QGraphicsView { Q_OBJECT; public: enum Mode { Rubber, Line, Rect, Circle, HandLine, FilledHandLine, Text, Polygon, Select }; enum Type { New, Update }; GView(QGraphicsScene* scene, QWidget* parent = 0); void setLineWidth(int i); void setLineColor(QColor color); QColor getLineColor(); void setBrushColor(QColor color); QColor getBrushColor(); void setMode(Mode mode); void mouseMoveEvent(QMouseEvent* event); void mousePressEvent(QMouseEvent* event); void mouseReleaseEvent(QMouseEvent* event); void addItem(QGraphicsItem* item, QString id, int pos); void setIDPrefix(QString prefix); void clear(); QGraphicsItem* getItem(QString id); void deleteItem(QString id); public slots: void moveUpSelectedItem(); void moveDownSelectedItem(); private slots: void handleTextItemModified(QGraphicsTextItem*); private: QString getNewID(); int zValue; bool mousePressed; QPen pen; QBrush brush; Mode mode; QGraphicsItem* lastItem; QGraphicsRectItem* selectionRect; TextDialog* textDialog; QMap itemsMap_; QList items_; SimpleIDGenerator idGenerator; QString idPrefix; signals: void lastItemChanged(QGraphicsItem* item, int pos, GView::Type type); void itemDeleted(QString id, int pos); }; }