NCL Composer  0.1.5
 All Classes Functions Variables Pages
qnlygraphicsregionbase.h
1 /*
2  * Copyright 2011 TeleMidia/PUC-Rio.
3  *
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Lesser General Public
6  * License as published by the Free Software Foundation; either
7  * version 2.1 of the License, or (at your option) any later version.
8  *
9  * This library is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12  * Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public
15  * License along with this library. If not, see
16  * <http://www.gnu.org/licenses/>.
17  */
18 #ifndef QNLYGRAPHICSREGIONBASE_H
19 #define QNLYGRAPHICSREGIONBASE_H
20 
21 #include <QMenu>
22 #include <QAction>
23 #include <QGraphicsScene>
24 #include <QDebug>
25 #include <QActionGroup>
26 #include <QGraphicsSceneContextMenuEvent>
27 #include <QObject>
28 #include <QMap>
29 #include <QGraphicsSceneMouseEvent>
30 #include <QFileDialog>
31 
32 #include "qnlygraphicsregion.h"
33 #include "qnlygraphicsgrid.h"
34 
35 class QnlyGraphicsRegion;
36 
37 class QnlyGraphicsRegionBase : public QGraphicsScene
38 {
39  Q_OBJECT
40 
41 public:
42  QnlyGraphicsRegionBase(QObject* parent, QMenu* switchMenu);
43 
45 
46  QString getId() const;
47 
48  void setId(const QString &id);
49 
50  QString getUid() const;
51 
52  void setUid(const QString &uid);
53 
54  QString getRegion() const;
55 
56  void setRegion(const QString &region);
57 
58  QString getDevice() const;
59 
60  void setDevice(const QString &device);
61 
62  void addRegion(QnlyGraphicsRegion* region,
63  QnlyGraphicsRegion* parent,
64  const QMap<QString, QString> attributes);
65 
66  void changeRegion(QnlyGraphicsRegion* region,
67  const QMap<QString, QString> attributes);
68 
69  void selectRegion(QnlyGraphicsRegion* region);
70 
71  void hideRegion(QnlyGraphicsRegion* region);
72 
73  void updateActionText(QnlyGraphicsRegion *region);
74 
75  void removeRegion(QnlyGraphicsRegion* region);
76 
77  QGraphicsItem* getBackgroundItem();
78 
79  void changeResolution(int w, int h);
80 
81  bool isGridVisible();
82 
83  void setGridVisible(bool active);
84 
85 signals:
86  void regionAdditionRequested(const QString regionUID,
87  const QString parentUID,
88  const QString regionbaseUID,
89  QMap<QString, QString> attributes);
90 
91  void regionChangeRequested(const QString regionUID,
92  const QString regionbaseUID,
93  QMap<QString, QString> attributes);
94 
95  void regionSelectionRequested(
96  const QString regionUID,
97  const QString regionbaseUID);
98 
99  void regionDeletionRequested(
100  const QString regionUID,
101  const QString regionbaseUID);
102 
103  void regionBaseDeletionRequested(
104  const QString regionbaseUID);
105 
106  void regionBaseSelectionRequested(const QString regionbaseUID);
107 
108  void mediaOverRegion(const QString &mediaId, const QString &regionUID);
109 
110  void regionbasePerformed();
111 
112  void gridVisibilityChanged(bool gridVisibility);
113 
114 protected:
115  virtual void contextMenuEvent(QGraphicsSceneContextMenuEvent* event);
116  void mouseMoveEvent(QGraphicsSceneMouseEvent* event);
117  void mousePressEvent(QGraphicsSceneMouseEvent* event);
118 
119 protected slots:
120  void performShow(QAction* action);
121 
122  void requestAdditionRegion(QnlyGraphicsRegion* parent);
123 
124  void requestRegionSelection(QnlyGraphicsRegion* region);
125 
126  void requestRegionDeletion(QnlyGraphicsRegion* region);
127 
128  void requestRegionChange(QnlyGraphicsRegion* region,
129  QMap<QString, QString> attributes);
130 
131  void performRegion();
132 
133  void performDelete();
134 
135  void requestMediaOverRegionAction(QString mediaId,
136  QnlyGraphicsRegion* region);
137 
138 
139 
140  void performExport();
141 
142  void performChangeResolution();
143 
144  void performGrid();
145 
146 private:
147  void createActions();
148 
149  void createMenus();
150 
151  void createConnections();
152 
153  QMenu* viewMenu;
154 
155  QMenu* insertMenu;
156 
157  QMenu* showMenu;
158 
159  QMenu* arrangeMenu;
160 
161  QMenu* screensizeMenu;
162 
163  QMenu* switchMenu;
164 
165  QMenu* contextMenu;
166 
167  QAction* helpAction;
168 
169  QAction* undoAction;
170 
171  QAction* redoAction;
172 
173  QAction* cutAction;
174 
175  QAction* copyAction;
176 
177  QAction* pasteAction;
178 
179  QAction* deleteAction;
180 
181  QAction* zoominAction;
182 
183  QAction* zoomoutAction;
184 
185  QAction* zoomresetAction;
186 
187  QAction* hideAction;
188 
189  QAction* fullscreenAction;
190 
191  QAction* exportAction;
192 
193  QAction* regionAction;
194 
195  QAction* regionbaseAction;
196 
197  QAction* bringfrontAction;
198 
199  QAction* bringforwardAction;
200 
201  QAction* sendbackwardAction;
202 
203  QAction* sendbackAction;
204 
205  QAction* propertiesAction;
206 
207  QAction* gridAction;
208 
209  QAction* action;
210 
211  // \todo This could be an array (and the user could also add its own size)
212  QAction* re640x480;
213  QAction* re800x600;
214  QAction* re1024x768;
215  QAction* re854x480;
216  QAction* re1280x720;
217  QAction* re1920x1080;
218  QAction* re320x400;
219 
220  QActionGroup* screensizeGroup;
221 
222  QActionGroup* regionActionGroup;
223 
224  QGraphicsTextItem *graphicsRegionBaseId;
225 
226  QString id;
227 
228  QString uid;
229 
230  QString region;
231 
232  QString device;
233 
234  QGraphicsRectItem* bgrect;
235 
236  QnlyGraphicsGrid* grid;
237 
238  QnlyGraphicsRegion* selectedRegion;
239 
240  QMap<QString, QAction*> regionActions;
241 
242  QMap<QString, QnlyGraphicsRegion*> regions;
243 };
244 
245 #endif // QNLYGRAPHICSREGIONBASE_H