File indexing completed on 2024-05-19 05:40:16

0001 #ifndef ITEMEDITOR_H
0002 #define ITEMEDITOR_H
0003 
0004 #include <QGraphicsView>
0005 #include <QList>
0006 #include <QPointer>
0007 #include <memory>
0008 
0009 class EditorController;
0010 class FieldController;
0011 class ItemEditor : public QGraphicsView
0012 {
0013     Q_OBJECT
0014 public:
0015     ItemEditor(QWidget* parent= nullptr);
0016     void setController(EditorController* editCtrl);
0017     bool handle() const;
0018     void setHandle(bool handle);
0019 
0020 protected:
0021     void contextMenuEvent(QContextMenuEvent* event);
0022     void mousePressEvent(QMouseEvent* event);
0023     void mouseReleaseEvent(QMouseEvent* event);
0024 
0025 signals:
0026     void openContextMenu(QPoint);
0027 
0028 private:
0029     bool m_handle;
0030     QPointer<EditorController> m_ctrl;
0031     std::unique_ptr<QAction> m_lockItem;
0032     std::unique_ptr<QAction> m_fitInView;
0033     std::unique_ptr<QAction> m_alignOnY;
0034     std::unique_ptr<QAction> m_alignOnX;
0035     std::unique_ptr<QAction> m_sameWidth;
0036     std::unique_ptr<QAction> m_sameHeight;
0037     std::unique_ptr<QAction> m_dupplicate;
0038     std::unique_ptr<QAction> m_verticalEquaDistance;
0039     std::unique_ptr<QAction> m_horizontalEquaDistance;
0040 
0041     QList<FieldController*> m_selection;
0042     QPointer<FieldController> m_underCursorItem;
0043 };
0044 
0045 #endif // ITEMEDITOR_H