20 QnlyView::QnlyView(QWidget* parent) :
21 QStackedWidget(parent),
24 setWindowTitle(
"Qnly");
33 selectedRegion = NULL;
34 selectedRegionBase = NULL;
42 void QnlyView::createActions()
45 helpAction =
new QAction(
this);
46 helpAction->setText(tr(
"Help"));
48 helpAction->setEnabled(
false);
49 helpAction->setShortcut(QKeySequence(
"F1"));
59 redoAction =
new QAction(
this);
60 redoAction->setText(tr(
"Redo"));
62 redoAction->setEnabled(
false);
63 redoAction->setShortcut(QKeySequence(
"Ctrl+Shift+Z"));
66 cutAction =
new QAction(
this);
67 cutAction->setText(tr(
"Cut"));
69 cutAction->setEnabled(
false);
70 cutAction->setShortcut(QKeySequence(
"Ctrl+X"));
73 copyAction =
new QAction(
this);
74 copyAction->setText(tr(
"Copy"));
76 copyAction->setEnabled(
false);
77 copyAction->setShortcut(QKeySequence(
"Ctrl+C"));
80 pasteAction =
new QAction(
this);
81 pasteAction->setText(tr(
"Paste"));
83 pasteAction->setEnabled(
false);
84 pasteAction->setShortcut(QKeySequence(
"Ctrl+V"));
87 deleteAction =
new QAction(
this);
88 deleteAction->setText(tr(
"Delete"));
90 deleteAction->setEnabled(
false);
91 deleteAction->setShortcut(QKeySequence(
"Del"));
94 zoominAction =
new QAction(
this);
95 zoominAction->setText(tr(
"Zoom In"));
97 zoominAction->setEnabled(
false);
98 zoominAction->setShortcut(QKeySequence(
"Ctrl++"));
101 zoomoutAction =
new QAction(
this);
102 zoomoutAction->setText(tr(
"Zoom Out"));
104 zoomoutAction->setEnabled(
false);
105 zoomoutAction->setShortcut(QKeySequence(
"Ctrl+-"));
108 zoomresetAction =
new QAction(
this);
109 zoomresetAction->setText(tr(
"Reset"));
111 zoomresetAction->setEnabled(
false);
112 zoomresetAction->setShortcut(QKeySequence(
"Ctrl+0"));
115 fullscreenAction =
new QAction(
this);
116 fullscreenAction->setText(tr(
"Full Screen"));
118 fullscreenAction->setEnabled(
true);
119 fullscreenAction->setShortcut(QKeySequence(
"F11"));
122 exportAction =
new QAction(
this);
123 exportAction->setText(tr(
"Export..."));
125 exportAction->setEnabled(
false);
128 regionAction =
new QAction(
this);
129 regionAction->setText(tr(
"Region"));
131 regionAction->setEnabled(
false);
134 regionbaseAction =
new QAction(
this);
135 regionbaseAction->setText(tr(
"Region Base"));
137 regionbaseAction->setEnabled(
true);
140 bringfrontAction =
new QAction(
this);
141 bringfrontAction->setText(tr(
"Bring to Front"));
143 bringfrontAction->setEnabled(
false);
144 bringfrontAction->setShortcut(QKeySequence(
"Shift+Ctrl+]"));
147 bringforwardAction =
new QAction(
this);
148 bringforwardAction->setText(tr(
"Bring Forward"));
150 bringforwardAction->setEnabled(
false);
151 bringforwardAction->setShortcut(QKeySequence(
"Ctrl+]"));
154 sendbackwardAction =
new QAction(
this);
155 sendbackwardAction->setText(tr(
"Send Backward"));
157 sendbackwardAction->setEnabled(
false);
158 sendbackwardAction->setShortcut(QKeySequence(
"Ctrl+["));
161 sendbackAction =
new QAction(
this);
162 sendbackAction->setText(tr(
"Send to Back"));
164 sendbackAction->setEnabled(
false);
165 sendbackAction->setShortcut(QKeySequence(
"Shift+Ctrl+["));
168 hideAction =
new QAction(
this);
169 hideAction->setText(tr(
"Hide"));
171 hideAction->setEnabled(
false);
174 propertiesAction =
new QAction(
this);
175 propertiesAction->setText(tr(
"Properties"));
177 propertiesAction->setEnabled(
false);
179 regionbaseActionGroup =
new QActionGroup(
this);
180 regionbaseActionGroup->setExclusive(
true);
182 setMouseTracking(
true);
185 void QnlyView::createMenus()
188 viewMenu =
new QMenu();
189 viewMenu->setTitle(tr(
"View"));
191 viewMenu->setEnabled(
false);
193 viewMenu->addAction(zoominAction);
194 viewMenu->addAction(zoomoutAction);
195 viewMenu->addAction(zoomresetAction);
196 viewMenu->addSeparator();
197 viewMenu->addAction(fullscreenAction);
200 insertMenu =
new QMenu();
201 insertMenu->setTitle(tr(
"Insert"));
203 insertMenu->setEnabled(
true);
205 insertMenu->addAction(regionAction);
206 insertMenu->addAction(regionbaseAction);
208 showMenu =
new QMenu();
209 showMenu->setTitle(tr(
"Show"));
211 showMenu->setEnabled(
false);
214 arrangeMenu =
new QMenu();
215 arrangeMenu->setTitle(tr(
"Arrange"));
217 arrangeMenu->setEnabled(
false);
219 arrangeMenu->addAction(bringfrontAction);
220 arrangeMenu->addAction(bringforwardAction);
221 arrangeMenu->addAction(sendbackwardAction);
222 arrangeMenu->addAction(sendbackAction);
225 switchMenu =
new QMenu();
226 switchMenu->setTitle(tr(
"Switch"));
228 switchMenu->setEnabled(
false);
231 contextMenu =
new QMenu();
232 contextMenu->addAction(helpAction);
241 contextMenu->addAction(deleteAction);
242 contextMenu->addSeparator();
243 contextMenu->addAction(exportAction);
244 contextMenu->addSeparator();
245 contextMenu->addMenu(viewMenu);
246 contextMenu->addMenu(insertMenu);
247 contextMenu->addMenu(showMenu);
248 contextMenu->addMenu(arrangeMenu);
249 contextMenu->addSeparator();
250 contextMenu->addAction(hideAction);
251 contextMenu->addSeparator();
252 contextMenu->addMenu(switchMenu);
253 contextMenu->addSeparator();
254 contextMenu->addAction(propertiesAction);
257 void QnlyView::createConnections()
259 connect(regionbaseActionGroup, SIGNAL(triggered(QAction*)),
260 SLOT(performSwitch(QAction*)));
262 connect(regionbaseAction, SIGNAL(triggered()),SLOT(performRegionBase()));
265 void QnlyView::requestRegionAddition(
const QString regionUID,
266 const QString parentUID,
267 const QString regionbaseUID,
268 QMap<QString, QString> attributes)
273 emit regionAdded(regionUID, parentUID, regionbaseUID, attributes);
276 void QnlyView::requestRegionChange(
const QString regionUID,
277 const QString regionbaseUID,
278 QMap<QString, QString> attributes)
281 emit regionChanged(regionUID,
286 void QnlyView::performSwitch(QAction* action)
288 emit regionBaseSelected(regionbaseActions.key(action));
291 void QnlyView::performRegionBase()
293 QMap<QString, QString> attributes;
295 attributes[
"id"] =
"rgbase" + QString::number(++nregionbases);
297 emit regionBaseAdded((QString) QUuid::createUuid(), attributes);
300 void QnlyView::addRegion(
const QString regionUID,
301 const QString parentUID,
302 const QString regionbaseUID,
303 const QMap<QString, QString> attributes)
305 if (!regions.contains(regionUID) &&
306 regionbases.contains(regionbaseUID))
310 if (regionUID.isEmpty())
311 region->setUid((QString) QUuid::createUuid());
313 region->setUid(regionUID);
317 if (regions.contains(parentUID))
318 parent = regions[parentUID];
324 addRegion(region, parent, regionbase, attributes);
328 void QnlyView::removeRegion(
const QString regionUID,
329 const QString regionbaseUID)
331 if (regions.contains(regionUID) && regionbases.contains(regionbaseUID))
333 removeRegion(regions[regionUID],
334 regionbases[regionbaseUID]);
338 void QnlyView::changeRegion(
const QString regionUID,
339 const QString regionbaseUID,
340 const QMap<QString, QString> attributes)
342 if (regions.contains(regionUID) && regionbases.contains(regionbaseUID))
344 changeRegion(regions[regionUID],
345 regionbases[regionbaseUID],
350 void QnlyView::selectRegion(
const QString regionUID,
351 const QString regionbaseUID)
353 if (regions.contains(regionUID) && regionbases.contains(regionbaseUID))
355 selectRegion(regions[regionUID],
356 regionbases[regionbaseUID]);
360 void QnlyView::addRegionBase(
const QString regionbaseUID,
361 const QMap<QString, QString> attributes)
363 if (!regionbases.contains(regionbaseUID))
370 regionbase->setParent(canvas);
372 canvas->setScene(regionbase);
374 if (regionbaseUID.isEmpty())
376 regionbase->setUid((QString) QUuid::createUuid());
379 regionbase->setUid(regionbaseUID);
382 addRegionBase(regionbase, attributes);
386 void QnlyView::removeRegionBase(
const QString regionbaseUID)
388 if (regionbases.contains(regionbaseUID))
390 removeRegionBase(regionbases[regionbaseUID]);
394 void QnlyView::changeRegionBase(
const QString regionbaseUID,
395 const QMap<QString, QString> attributes)
397 if (regionbases.contains(regionbaseUID))
399 changeRegionBase(regionbases[regionbaseUID], attributes);
403 void QnlyView::selectRegionBase(
const QString regionbaseUID)
405 if (regionbases.contains(regionbaseUID))
407 selectRegionBase(regionbases[regionbaseUID]);
414 const QMap<QString, QString> attributes)
416 if (region != NULL && regionBase != NULL)
418 qDebug() <<
"Adding Region" << attributes;
420 regions[region->getUid()] = region;
422 regionBase->addRegion(region,
431 if (region != NULL && regionBase != NULL)
433 qDebug() <<
"Region Removed!";
435 foreach(QGraphicsItem* item, region->childItems())
440 removeRegion(child, regionBase);
442 qWarning() <<
"Trying to remove an element that is not of the type QnlyGraphicsRegion " << __FILE__ << __LINE__;
445 regions.remove(region->getUid());
447 regionBase->removeRegion(region);
457 const QMap<QString, QString> attributes)
459 if (region != NULL && regionBase != NULL)
461 regionBase->changeRegion(region, attributes);
468 if (region != NULL && regionBase != NULL)
470 if (selectedRegion != NULL)
472 selectedRegion->setSelected(
false);
475 regionBase->selectRegion(region);
477 selectedRegion = region;
479 QWidget* parent = (QWidget*) regionBase->parent();
481 setCurrentWidget(parent);
486 const QMap<QString, QString> attributes)
488 if (regionBase != NULL)
490 qDebug() <<
"RegionBase Added!";
492 if (attributes.contains(
"id"))
493 regionBase->setId(attributes[
"id"]);
495 if (attributes.contains(
"region"))
496 regionBase->setId(attributes[
"region"]);
498 if (attributes.contains(
"device"))
499 regionBase->setId(attributes[
"device"]);
501 QWidget* parent = (QWidget*) regionBase->parent();
504 setCurrentWidget(parent);
506 regionbases[regionBase->getUid()] = regionBase;
508 QAction* action =
new QAction(
this);
509 action->setText(regionBase->getId());
511 switchMenu->addAction(action);
513 action->setCheckable(
true);
514 action->setEnabled(
true);
516 regionbaseActionGroup->addAction(action);
520 regionbaseActions[regionBase->getUid()] = action;
522 connect(regionBase, SIGNAL(regionbasePerformed()),
523 SLOT(performRegionBase()));
526 SIGNAL(regionAdditionRequested(QString,QString,QString
527 ,QMap<QString,QString>)),
528 SLOT(requestRegionAddition(QString,QString,QString
529 ,QMap<QString,QString>)));
532 SIGNAL(regionChangeRequested(QString,QString,QMap<QString,QString>)),
533 SLOT(requestRegionChange(QString,QString,QMap<QString,QString>)));
536 SIGNAL(regionSelectionRequested(QString,QString)),
537 SIGNAL(regionSelected(QString,QString)));
540 SIGNAL(regionBaseSelectionRequested(QString)),
541 SIGNAL(regionBaseSelected(QString)));
544 SIGNAL(regionBaseDeletionRequested(QString)),
545 SIGNAL(regionBaseRemoved(QString)));
548 SIGNAL(regionDeletionRequested(QString,QString)),
549 SIGNAL(regionRemoved(QString,QString)));
552 SIGNAL(mediaOverRegion(QString,QString)),
553 SIGNAL(mediaOverRegionAction(QString,QString)));
555 regionBase->setGridVisible(gridVisibility);
557 SIGNAL(gridVisibilityChanged(
bool)),
558 SLOT(setGridVisible(
bool)));
561 emit regionBaseSelected(regionBase->getUid());
567 if (regionBase != NULL)
569 QAction* action = regionbaseActions[regionBase->getUid()];
570 switchMenu->removeAction(action);
572 regionbaseActionGroup->removeAction(action);
576 foreach(QGraphicsItem* item, regionBase->items())
578 if (item != regionBase->getBackgroundItem()) {
583 regions.remove(child->getUid());
586 qWarning() <<
"Trying to remove an element that is not of the type QnlyGraphicsRegion " << __FILE__ << __LINE__;
593 QWidget* parent = (QWidget*) regionBase->parent();
595 removeWidget(parent);
597 regionbases.remove(regionBase->getUid());
599 if (currentWidget() != NULL)
604 emit regionBaseSelected(current->getUid());
610 const QMap<QString, QString> attributes)
612 if (regionBase != NULL)
614 if (attributes.contains(
"id"))
616 regionBase->setId(attributes[
"id"]);
618 QAction* action = regionbaseActions[regionBase->getUid()];
619 action->setText(attributes[
"id"]);
622 if (attributes.contains(
"region"))
623 regionBase->setId(attributes[
"region"]);
625 if (attributes.contains(
"device"))
626 regionBase->setId(attributes[
"device"]);
632 if (regionBase != NULL)
634 QWidget* parent = (QWidget*) regionBase->parent();
636 setCurrentWidget(parent);
638 QAction* action = regionbaseActions[regionBase->getUid()];
639 action->setChecked(
true);
641 if (selectedRegion != NULL)
643 selectedRegion->setSelected(
false);
646 selectedRegionBase = regionBase;
650 void QnlyView::setGridVisible(
bool visible)
652 this->gridVisibility = visible;
655 regionBase->setGridVisible(visible);
661 return selectedRegionBase;
664 void QnlyView::contextMenuEvent(QContextMenuEvent *event)
666 QStackedWidget::contextMenuEvent(event);
668 if (!event->isAccepted())
670 contextMenu->exec(event->globalPos());