Root/Software/sie_cg/diagramscene.h

1/****************************************************************************
2**
3** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
4** All rights reserved.
5** Contact: Nokia Corporation (qt-info@nokia.com)
6**
7** This file is part of the examples of the Qt Toolkit.
8**
9** $QT_BEGIN_LICENSE:LGPL$
10** Commercial Usage
11** Licensees holding valid Qt Commercial licenses may use this file in
12** accordance with the Qt Commercial License Agreement provided with the
13** Software or, alternatively, in accordance with the terms contained in
14** a written agreement between you and Nokia.
15**
16** GNU Lesser General Public License Usage
17** Alternatively, this file may be used under the terms of the GNU Lesser
18** General Public License version 2.1 as published by the Free Software
19** Foundation and appearing in the file LICENSE.LGPL included in the
20** packaging of this file. Please review the following information to
21** ensure the GNU Lesser General Public License version 2.1 requirements
22** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
23**
24** In addition, as a special exception, Nokia gives you certain additional
25** rights. These rights are described in the Nokia Qt LGPL Exception
26** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
27**
28** GNU General Public License Usage
29** Alternatively, this file may be used under the terms of the GNU
30** General Public License version 3.0 as published by the Free Software
31** Foundation and appearing in the file LICENSE.GPL included in the
32** packaging of this file. Please review the following information to
33** ensure the GNU General Public License version 3.0 requirements will be
34** met: http://www.gnu.org/copyleft/gpl.html.
35**
36** If you have questions regarding the use of this file, please contact
37** Nokia at qt-info@nokia.com.
38** $QT_END_LICENSE$
39**
40****************************************************************************/
41
42#ifndef DIAGRAMSCENE_H
43#define DIAGRAMSCENE_H
44
45#include <QGraphicsScene>
46#include <QDesktopServices>
47#include <QtXml>
48#include "diagramitem.h"
49#include "diagramtextitem.h"
50#include "mainwindow.h"
51
52class MainWindow;
53class DiagramTextItem;
54
55QT_BEGIN_NAMESPACE
56class QGraphicsSceneMouseEvent;
57class QMenu;
58class QPointF;
59class QGraphicsLineItem;
60class QFont;
61class QGraphicsTextItem;
62class QColor;
63QT_END_NAMESPACE
64
65class DiagramScene : public QGraphicsScene
66{
67    Q_OBJECT
68
69public:
70    enum Mode { InsertItem, InsertLine, InsertText, MoveItem };
71
72    DiagramScene(QMenu *itemMenu, MainWindow *ownerWindow,
73                 QObject *parent = 0);
74
75    QFont font() const
76        { return myFont; }
77    QColor textColor() const
78        { return myTextColor; }
79    QColor itemColor() const
80        { return myItemColor; }
81    QColor lineColor() const
82        { return myLineColor; }
83    void setLineColor(const QColor &color);
84    void setTextColor(const QColor &color);
85    void setItemColor(const QColor &color);
86    void setFont(QFont font);
87    void setDawGrid(bool value) {drawGrid=value;}
88
89    QDomDocument toXmlFormat();
90    int fromXmlFormat(QDomDocument xmlDocument);
91    void cleanScene();
92
93    QHash<int , DiagramItem *> getDiagramsID ()
94        { return DiagramsID;}
95
96    QStringList getLibList(){return libraryList;}
97    void setLibList(QStringList list)
98        {libraryList=list;}
99
100    void setDomElementsByName(QHash<QString , QDomElement*> *hash)
101        {domElementsByName=hash;}
102
103    void setButtonIdByName(QHash<QString , int> hash)
104        {buttonIdByName=hash;}
105
106    int addDiagramItem(DiagramItem * item);
107    void removeDiagramItem(DiagramItem * item);
108
109    MainWindow *myOwnerWindow;
110
111    void saveUndoState();
112    void saveUndo();
113    void removeLastUndo();
114    void clearRedo();
115
116public slots:
117    void setMode(Mode mode);
118    void setItemType(QString type);
119
120signals:
121    void itemInserted(DiagramItem *item);
122    void textInserted(QGraphicsTextItem *item);
123    void itemSelected(QGraphicsItem *item);
124
125protected:
126    void mousePressEvent(QGraphicsSceneMouseEvent *mouseEvent);
127    void mouseMoveEvent(QGraphicsSceneMouseEvent *mouseEvent);
128    void mouseReleaseEvent(QGraphicsSceneMouseEvent *mouseEvent);
129    void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *mouseEvent);
130    void drawBackground(QPainter *p, const QRectF &r);
131
132private:
133    bool isItemChange(int type);
134    void doSnapToGrid(QGraphicsSceneMouseEvent *mouseEvent);
135    QString myItemType;
136    QMenu *myItemMenu;
137    Mode myMode;
138    bool leftButtonDown;
139    QPointF startPoint;
140    QGraphicsLineItem *line;
141    QFont myFont;
142    DiagramTextItem *textItem;
143    QColor myTextColor;
144    QColor myItemColor;
145    QColor myLineColor;
146    bool snapToGrid;
147    bool drawGrid;
148    short int myGrid;
149    QStringList libraryList;
150    QHash<QString , QDomElement*> *domElementsByName;
151    QHash<QString , int> buttonIdByName;
152    QHash<int , DiagramItem *> DiagramsID;
153};
154
155#endif
156

Archive Download this file

Branches:
master



interactive