18 #include "qnlycomposerplugin.h"
20 #include <QAbstractButton>
21 #include <QPushButton>
22 #include <QMessageBox>
23 #include <QInputDialog>
25 QnlyComposerPlugin::QnlyComposerPlugin(QObject* parent)
35 QnlyComposerPlugin::~QnlyComposerPlugin()
37 if(selectedId != NULL)
42 void QnlyComposerPlugin::createView()
47 void QnlyComposerPlugin::createConnections()
50 SIGNAL(regionAdded(QString,QString,QString,QMap<QString,QString>)),
51 SLOT(addRegion(QString,QString,QString,QMap<QString,QString>)));
54 SIGNAL(regionRemoved(QString,QString)),
55 SLOT(removeRegion(QString,QString)));
58 SIGNAL(regionSelected(QString,QString)),
59 SLOT(selectRegion(QString,QString)));
62 SIGNAL(regionChanged(QString,QString,QMap<QString,QString>)),
63 SLOT(changeRegion(QString,QString,QMap<QString,QString>)));
66 SIGNAL(regionBaseAdded(QString,QMap<QString,QString>)),
67 SLOT(addRegionBase(QString,QMap<QString,QString>)));
70 SIGNAL(regionBaseChanged(QString,QMap<QString,QString>)),
71 SLOT(changeRegionBase(QString,QMap<QString,QString>)));
74 SIGNAL(regionBaseSelected(QString)),
75 SLOT(selectRegionBase(QString)));
78 SIGNAL(regionBaseRemoved(QString)),
79 SLOT(removeRegionBase(QString)));
82 SIGNAL(mediaOverRegionAction(QString, QString)),
83 SLOT(performMediaOverRegionAction(QString, QString)));
86 void QnlyComposerPlugin::updateFromModel()
89 bool isGridVisible =
false;
92 if(currentRegionBase != NULL)
94 previousRect = currentRegionBase->sceneRect();
95 isGridVisible = currentRegionBase->isGridVisible();
102 currentRegionBase = view->getSelectedRegionBase();
103 if(currentRegionBase != NULL)
105 currentRegionBase->changeResolution(previousRect.width(),
106 previousRect.height());
107 currentRegionBase->setGridVisible(isGridVisible);
111 void QnlyComposerPlugin::loadRegionbase()
113 QList<Entity*> regionbaseList =
getProject()->getEntitiesbyType(
"regionBase");
115 if (!regionbaseList.isEmpty())
117 foreach(Entity* regionbaseEntity, regionbaseList)
119 addRegionBaseToView(regionbaseEntity);
121 QVector<Entity*> children = regionbaseEntity->getChildren();
123 foreach(Entity* child, children)
131 void QnlyComposerPlugin::loadRegion(Entity* region)
135 addRegionToView(region);
137 QVector<Entity*> children = region->getChildren();
139 foreach(Entity* child, children)
155 QVariant gridVisible(QVariant::Bool),
156 resolutionWidth(QVariant::Int),
157 resolutionHeight(QVariant::Int);
159 if(view->getSelectedRegionBase() != NULL)
161 gridVisible.setValue(view->getSelectedRegionBase()->isGridVisible());
162 resolutionWidth.setValue(view->getSelectedRegionBase()->sceneRect().width());
163 resolutionHeight.setValue(view->getSelectedRegionBase()->sceneRect().height());
167 gridVisible.setValue(
false);
168 resolutionWidth.setValue(0);
169 resolutionHeight.setValue(0);
172 line += QString(
"gridVisible=") + gridVisible.toString() +
"\n";
173 line += QString(
"resolutionWidth=") + resolutionWidth.toString() +
"\n";
174 line += QString(
"resolutionHeight=") + resolutionHeight.toString() +
"\n";
176 qDebug() <<
"[QNLY] saveSubsession() data is " << data;
184 QString data =
project->getPluginData(
"br.puc-rio.telemidia.qncllayout");
185 qDebug() <<
"[QNLY] data = " << data;
186 QStringList lines = data.split(
"\n");
187 bool gridVisible =
false, ok =
true;
188 int resolutionWidth, resolutionHeight;
190 for(
int i = 0; i < lines.size(); i++)
192 QStringList list = lines[i].split(
"=");
193 for(
int j = 0; !(list.size()%2) && j < list.size(); j += 2)
195 QString key = list[j];
196 QString value = list[j+1];
197 if(key ==
"gridVisible")
199 qDebug() <<
"[QNLY] gridVisible = " << value;
203 else if(key ==
"resolutionWidth")
205 resolutionWidth = value.toInt(&ok);
209 else if(key ==
"resolutionHeight")
211 resolutionHeight = value.toInt(&ok);
213 resolutionHeight = 0;
218 qDebug() << resolutionWidth << resolutionHeight;
220 QStack <Entity*> stack;
225 Entity *current = stack.top();
228 if(current->getType() ==
"regionBase")
230 addRegionBaseToView(current);
234 view->getSelectedRegionBase()->changeResolution(resolutionWidth, resolutionHeight);
236 else if(current->getType() ==
"region")
238 addRegionToView(current);
241 QVector <Entity *> children = current->getChildren();
242 for(
int i = 0; i < children.size(); i++)
244 stack.push(children.at(i));
248 view->setGridVisible(gridVisible);
251 void QnlyComposerPlugin::errorMessage(QString error)
256 void QnlyComposerPlugin::onEntityAdded(QString pluginID, Entity *entity)
260 if (entity->getType() ==
"region")
262 addRegionToView(entity);
264 else if (entity->getType() ==
"regionBase")
266 addRegionBaseToView(entity);
271 void QnlyComposerPlugin::onEntityRemoved(QString pluginID, QString entityID)
273 if (!entityID.isEmpty())
275 if (regions.contains(entityID))
277 removeRegionFromView(entityID);
279 else if (regionbases.contains(entityID))
281 removeRegionBaseFromView(entityID);
286 void QnlyComposerPlugin::onEntityChanged(QString pluginID, Entity *entity)
290 if (entity->getType() ==
"region")
292 changeRegionInView(entity);
294 else if (entity->getType() ==
"regionBase")
296 changeRegionBaseInView(entity);
301 void QnlyComposerPlugin::changeSelectedEntity (QString pluginID,
void* param)
305 QString* entityUID = (QString*) param;
307 if(entityUID != NULL)
309 if (regions.contains(*entityUID))
310 selectRegionInView(*entityUID);
311 else if (regionbases.contains(*entityUID))
312 selectRegionBaseInView(*entityUID);
317 void QnlyComposerPlugin::addRegionToView(Entity* entity)
321 if (entity->getType() ==
"region")
326 if (!entity->getUniqueId().isEmpty())
328 entityUID = entity->getUniqueId();
332 qWarning() <<
"QnlyComposerPlugin::addRegion:"
333 <<
"Tried to add a region with empty UID.";
340 regionUID = entityUID;
344 if (regions.contains(entity->getParentUniqueId()))
346 parentUID = entity->getParentUniqueId();
353 QString regionbaseUID;
355 if (regions.contains(parentUID))
357 regionbaseUID = relations[parentUID];
359 else if (regionbases.contains(entity->getParentUniqueId()))
361 regionbaseUID = entity->getParentUniqueId();
366 qWarning() <<
"QnlyComposerPlugin::addRegion:"
367 <<
"Tried to add a region without regionbase UID.";
372 QMap<QString, QString> attributes;
374 if (!entity->getAttribute(
"id").isEmpty())
376 attributes[
"id"] = entity->getAttribute(
"id");
379 if (!entity->getAttribute(
"title").isEmpty())
381 attributes[
"title"] = entity->getAttribute(
"title");
384 if (!entity->getAttribute(
"zIndex").isEmpty())
386 attributes[
"zIndex"] = entity->getAttribute(
"zIndex");
389 if (!entity->getAttribute(
"top").isEmpty())
391 attributes[
"top"] = entity->getAttribute(
"top");
394 if (!entity->getAttribute(
"left").isEmpty())
396 attributes[
"left"] = entity->getAttribute(
"left");
399 if (!entity->getAttribute(
"bottom").isEmpty())
401 attributes[
"bottom"] = entity->getAttribute(
"bottom");
404 if (!entity->getAttribute(
"right").isEmpty())
406 attributes[
"right"] = entity->getAttribute(
"right");
409 if (!entity->getAttribute(
"width").isEmpty())
411 attributes[
"width"] = entity->getAttribute(
"width");
414 if (!entity->getAttribute(
"height").isEmpty())
416 attributes[
"height"] = entity->getAttribute(
"height");
420 regions[regionUID] = entity;
422 relations[regionUID] = regionbaseUID;
424 view->addRegion(regionUID,
432 void QnlyComposerPlugin::removeRegionFromView(QString entityUID)
434 if (!entityUID.isEmpty())
436 if (regions.contains(entityUID))
441 regionUID = entityUID;
443 QString regionbaseUID;
445 if (relations.contains(regionUID))
447 regionbaseUID = relations[regionUID];
451 qWarning() <<
"QnlyComposerPlugin::removeRegion:"
452 <<
"Tried to remove a region without"
453 <<
"regionbase UID.";
458 regions.remove(regionUID);
460 relations.remove(entityUID);
463 view->removeRegion(regionUID, regionbaseUID);
468 void QnlyComposerPlugin::changeRegionInView(Entity* entity)
472 if (entity->getType() ==
"region")
477 if (!entity->getUniqueId().isEmpty())
479 entityUID = entity->getUniqueId();
483 qWarning() <<
"QnlyComposerPlugin::addRegion:"
484 <<
"Tried to add an region with empty UID.";
491 regionUID = entityUID;
495 if (regions.contains(entity->getParentUniqueId()))
497 parentUID = entity->getParentUniqueId();
504 QString regionbaseUID;
506 if (regions.contains(parentUID))
508 regionbaseUID = relations[parentUID];
511 else if (regionbases.contains(entity->getParentUniqueId()))
513 regionbaseUID = entity->getParentUniqueId();
518 qWarning() <<
"QnlyComposerPlugin::addRegion:"
519 <<
"Tried to add an region without"
520 <<
"regionbase UID.";
525 QMap<QString, QString> attributes;
527 if (!entity->getAttribute(
"id").isEmpty())
529 attributes[
"id"] = entity->getAttribute(
"id");
532 if (!entity->getAttribute(
"title").isEmpty())
534 attributes[
"title"] = entity->getAttribute(
"title");
537 if (!entity->getAttribute(
"zIndex").isEmpty())
539 attributes[
"zIndex"] = entity->getAttribute(
"zIndex");
542 if (!entity->getAttribute(
"top").isEmpty())
544 attributes[
"top"] = entity->getAttribute(
"top");
547 if (!entity->getAttribute(
"left").isEmpty())
549 attributes[
"left"] = entity->getAttribute(
"left");
552 if (!entity->getAttribute(
"bottom").isEmpty())
554 attributes[
"bottom"] = entity->getAttribute(
"bottom");
557 if (!entity->getAttribute(
"right").isEmpty())
559 attributes[
"right"] = entity->getAttribute(
"right");
562 if (!entity->getAttribute(
"width").isEmpty())
564 attributes[
"width"] = entity->getAttribute(
"width");
567 if (!entity->getAttribute(
"height").isEmpty())
569 attributes[
"height"] = entity->getAttribute(
"height");
573 view->changeRegion(regionUID,
580 void QnlyComposerPlugin::selectRegionInView(QString entityUID)
582 if (!entityUID.isEmpty())
584 if (regions.contains(entityUID))
589 regionUID = entityUID;
591 QString regionbaseUID;
593 if (relations.contains(regionUID))
595 regionbaseUID = relations[regionUID];
599 qWarning() <<
"QnlyComposerPlugin::selectRegion:"
600 <<
"Tried to select a region without"
601 <<
"regionbase UID.";
607 view->selectRegion(regionUID, regionbaseUID);
612 void QnlyComposerPlugin::addRegionBaseToView(Entity* entity)
616 if (entity->getType() ==
"regionBase")
621 if (!entity->getUniqueId().isEmpty())
623 entityUID = entity->getUniqueId();
627 qWarning() <<
"QnlyComposerPlugin::addRegion:"
628 <<
"Tried to add a region with empty UID.";
633 QString regionbaseUID;
635 regionbaseUID = entityUID;
637 QMap<QString, QString> attributes;
639 if (!entity->getAttribute(
"id").isEmpty())
641 attributes[
"id"] = entity->getAttribute(
"id");
644 if (!entity->getAttribute(
"region").isEmpty())
646 attributes[
"region"] = entity->getAttribute(
"region");
649 if (!entity->getAttribute(
"device").isEmpty())
651 attributes[
"device"] = entity->getAttribute(
"device");
655 regionbases[regionbaseUID] = entity;
657 view->addRegionBase(regionbaseUID, attributes);
662 void QnlyComposerPlugin::removeRegionBaseFromView(QString entityUID)
664 if (!entityUID.isEmpty())
666 if (regionbases.contains(entityUID))
669 QString regionbaseUID;
671 regionbaseUID = entityUID;
674 view->removeRegionBase(regionbaseUID);
676 regionbases.remove(regionbaseUID);
678 relations.remove(entityUID);
684 void QnlyComposerPlugin::changeRegionBaseInView(Entity* entity)
688 if (entity->getType() ==
"regionBase")
693 if (!entity->getUniqueId().isEmpty())
695 entityUID = entity->getUniqueId();
699 qWarning() <<
"QnlyComposerPlugin::addRegion:"
700 <<
"Tried to add a region with empty UID.";
704 QString regionbaseUID;
705 regionbaseUID = entityUID;
707 QMap<QString, QString> attributes;
709 if (!entity->getAttribute(
"id").isEmpty())
711 attributes[
"id"] = entity->getAttribute(
"id");
714 if (!entity->getAttribute(
"region").isEmpty())
716 attributes[
"region"] = entity->getAttribute(
"region");
719 if (!entity->getAttribute(
"device").isEmpty())
721 attributes[
"device"] = entity->getAttribute(
"device");
725 regionbases[regionbaseUID] = entity;
727 view->changeRegionBase(regionbaseUID,
733 void QnlyComposerPlugin::selectRegionBaseInView(QString entityUID)
735 if (!entityUID.isEmpty())
737 if (regionbases.contains(entityUID))
740 QString regionbaseUID;
742 regionbaseUID = entityUID;
745 view->selectRegionBase(regionbaseUID);
750 void QnlyComposerPlugin::addRegion(
const QString regionUID,
751 const QString parentUID,
752 const QString regionbaseUID,
753 const QMap<QString, QString> attributes)
756 QMap<QString, QString> standard;
758 if (attributes.contains(
"id"))
759 standard[
"id"] = attributes[
"id"];
761 standard[
"id"] =
project->generateUniqueNCLId(
"region");
763 if (attributes.contains(
"title"))
764 standard[
"title"] = attributes[
"title"];
766 if (attributes.contains(
"top"))
767 standard[
"top"] = attributes[
"top"];
769 if (attributes.contains(
"left"))
770 standard[
"left"] = attributes[
"left"];
772 if (attributes.contains(
"bottom"))
773 standard[
"bottom"] = attributes[
"bottom"];
775 if (attributes.contains(
"right"))
776 standard[
"right"] = attributes[
"right"];
778 if (attributes.contains(
"width"))
779 standard[
"width"] = attributes[
"width"];
781 if (attributes.contains(
"height"))
782 standard[
"height"] = attributes[
"height"];
784 if (attributes.contains(
"zIndex"))
785 standard[
"zIndex"] = attributes[
"zIndex"];
788 if (!parentUID.isEmpty())
789 emit
addEntity(
"region", parentUID, standard,
false);
791 emit
addEntity(
"region", regionbaseUID, standard,
false);
794 void QnlyComposerPlugin::removeRegion(
const QString regionUID,
795 const QString regionbaseUID)
797 if (regions.contains(regionUID))
803 void QnlyComposerPlugin::changeRegion(
const QString regionUID,
804 const QString regionbaseUID,
805 const QMap<QString, QString> attributes)
807 if (regions.contains(regionUID))
810 QMap<QString, QString> standard;
812 if (attributes.contains(
"id"))
813 standard[
"id"] = attributes[
"id"];
815 if (attributes.contains(
"title"))
816 standard[
"title"] = attributes[
"title"];
818 if (attributes.contains(
"top"))
819 standard[
"top"] = attributes[
"top"];
821 if (attributes.contains(
"left"))
822 standard[
"left"] = attributes[
"left"];
824 if (attributes.contains(
"bottom"))
825 standard[
"bottom"] = attributes[
"bottom"];
827 if (attributes.contains(
"right"))
828 standard[
"right"] = attributes[
"right"];
830 if (attributes.contains(
"width"))
831 standard[
"width"] = attributes[
"width"];
833 if (attributes.contains(
"height"))
834 standard[
"height"] = attributes[
"height"];
836 if (attributes.contains(
"zIndex"))
837 standard[
"zIndex"] = attributes[
"zIndex"];
844 void QnlyComposerPlugin::selectRegion(
const QString regionUID,
845 const QString regionbaseUID)
847 if(selectedId != NULL)
853 if (!regionUID.isEmpty())
855 selectedId =
new QString(regionUID);
860 void QnlyComposerPlugin::addRegionBase(
const QString regionbaseUID,
861 const QMap<QString, QString> attributes)
864 QMap<QString, QString> standard;
866 if (attributes.contains(
"id"))
867 standard[
"id"] = attributes[
"id"];
869 if (attributes.contains(
"region"))
870 standard[
"region"] = attributes[
"region"];
872 if (attributes.contains(
"device"))
873 standard[
"device"] = attributes[
"device"];
875 QString headUID = getHeadUid();
877 emit
addEntity(
"regionBase", headUID, standard,
false);
880 void QnlyComposerPlugin::removeRegionBase(
const QString regionbaseUID)
882 if (regionbases.contains(regionbaseUID))
888 void QnlyComposerPlugin::changeRegionBase(
const QString regionbaseUID,
889 const QMap<QString, QString> attributes)
891 if (regionbases.contains(regionbaseUID))
894 QMap<QString, QString> standard;
896 if (attributes.contains(
"id"))
897 standard[
"id"] = attributes[
"id"];
899 if (attributes.contains(
"title"))
900 standard[
"title"] = attributes[
"title"];
902 if (attributes.contains(
"top"))
903 standard[
"top"] = attributes[
"top"];
905 if (attributes.contains(
"left"))
906 standard[
"left"] = attributes[
"left"];
908 if (attributes.contains(
"bottom"))
909 standard[
"bottom"] = attributes[
"bottom"];
911 if (attributes.contains(
"right"))
912 standard[
"right"] = attributes[
"right"];
914 if (attributes.contains(
"width"))
915 standard[
"width"] = attributes[
"width"];
917 if (attributes.contains(
"height"))
918 standard[
"height"] = attributes[
"height"];
920 if (attributes.contains(
"zIndex"))
921 standard[
"zIndex"] = attributes[
"zIndex"];
924 emit
setAttributes(regionbases[regionbaseUID],standard,
false);
928 void QnlyComposerPlugin::clear()
930 while(!regions.empty())
932 Entity* regionEntity = regions.begin().value();
934 qDebug() << regionEntity->getAttribute(
"id");
936 removeRegionFromView(regionEntity->getUniqueId());
939 while(!regionbases.empty())
941 Entity* regionbaseEntity = regionbases.begin().value();
943 removeRegionBaseFromView(regionbaseEntity->getUniqueId());
951 void QnlyComposerPlugin::selectRegionBase(
const QString regionbaseUID)
953 if(selectedId != NULL)
959 if (!regionbaseUID.isEmpty())
961 selectedId =
new QString(regionbaseUID);
966 QString QnlyComposerPlugin::getHeadUid()
968 if (
getProject()->getEntitiesbyType(
"head").isEmpty())
970 if (
getProject()->getEntitiesbyType(
"ncl").isEmpty())
972 QMap<QString, QString> atts;
981 getProject()->getEntitiesbyType(
"ncl").at(0)->getUniqueId();
983 QMap<QString, QString> atts;
985 emit
addEntity(
"head", nclUID, atts,
false);
988 return getProject()->getEntitiesbyType(
"head").at(0)->getUniqueId();
991 QMap <QString, QString> QnlyComposerPlugin::getRegionAttributes(Entity *region)
993 QMap <QString, QString>::iterator begin, end, it;
994 QVector <double> widths;
995 QVector <double> heights;
996 QVector <double> tops;
997 QVector <double> lefts;
999 double top = 1.0, left = 1.0;
1000 double cvalue = 0.0;
1002 Entity *currentRegion = region;
1006 while(currentRegion != NULL && currentRegion->getType() ==
"region")
1008 currentRegion->getAttributeIterator(begin, end);
1009 for (it = begin; it != end; ++it)
1011 QString name = it.key();
1012 QString value = it.value();
1013 if(value.endsWith(
"%"))
1014 cvalue = value.mid(0, value.indexOf(
"%")).toDouble();
1020 if(name ==
"width") widths.push_back(cvalue);
1021 else if(name ==
"height") heights.push_back(cvalue);
1022 else if(name ==
"top") tops.push_back(cvalue);
1023 else if(name ==
"left") lefts.push_back(cvalue);
1025 currentRegion = currentRegion->getParent();
1030 heights.push_back(1.0f);
1031 widths.push_back(1.0f);
1033 for(i = widths.size()-1; i > 0; --i)
1034 widths[i-1] *= widths[i];
1036 for(i = heights.size()-1; i > 0; --i)
1037 heights[i-1] *= heights[i];
1041 for(i = lefts.size()-1; i >= 0; --i)
1042 left += lefts[i] * widths[i+1];
1045 for(i = tops.size()-1; i >= 0; --i)
1046 top += tops[i] * heights[i+1];
1048 QMap <QString, QString> attrs;
1049 attrs.insert(
"width", QString::number(widths[0]*100.0)+
"%");
1050 attrs.insert(
"height", QString::number(heights[0]*100.0)+
"%");
1051 attrs.insert(
"left", QString::number(left*100.0)+
"%");
1052 attrs.insert(
"top", QString::number(top*100.0)+
"%");
1055 if(region->hasAttribute(
"zIndex"))
1056 attrs.insert(
"zIndex", region->getAttribute(
"zIndex"));
1058 attrs.insert(
"zIndex",
"0");
1063 void QnlyComposerPlugin::performMediaOverRegionAction(
const QString mediaId,
1064 const QString regionUID)
1067 Entity *region =
project->getEntityById(regionUID);
1068 Entity *media = NULL;
1069 QList <Entity*> medias =
project->getEntitiesbyType(
"media");
1071 const bool askDescOrProperties =
true;
1073 for(
int i = 0; i < medias.size(); i++)
1075 if(medias.at(i)->hasAttribute(
"id") &&
1076 medias.at(i)->getAttribute(
"id") == mediaId)
1078 media = medias.at(i);
1085 qWarning() <<
"QnlyComposerPlugin::performMediaOverRegionAction Region does not exists. Nothing will be done." ;
1091 qWarning() <<
"QnlyComposerPlugin::performMediaOverRegionAction Media was not found! Nothing will be done." ;
1097 if(askDescOrProperties)
1100 msgBox.setText(tr(
"Please, tell what do you want to do"));
1104 QPushButton *createDescButton =
1105 msgBox.addButton( tr(
"Use a descriptor"),
1106 QMessageBox::ActionRole);
1108 QPushButton *importPropButton =
1109 msgBox.addButton(tr(
"Import region properties to media object"),
1110 QMessageBox::ActionRole);
1113 QPushButton *cancelButton =
1114 msgBox.addButton(tr(
"Nothing!"),
1115 QMessageBox::ActionRole);
1119 if (msgBox.clickedButton() == createDescButton)
1121 qDebug() <<
"Creating a new descriptor";
1122 QMap <QString,QString> attrs;
1123 QList <Entity*> descritorBases =
1124 project->getEntitiesbyType(
"descriptorBase");
1127 QString newDescriptorID =
project->generateUniqueNCLId(
"descriptor");
1128 QStringList alredyExistentsDescriptorsIds, descriptorsIds;
1129 descriptorsIds << newDescriptorID;
1131 QList <Entity*> descriptors =
project->getEntitiesbyType(
"descriptor");
1132 foreach (Entity *desc, descriptors) {
1135 if(desc->getAttribute(
"region") == region->getAttribute(
"id"))
1137 alredyExistentsDescriptorsIds << desc->getAttribute(
"id");
1138 descriptorsIds << desc->getAttribute(
"id");
1144 newDescriptorID = QInputDialog::getItem(NULL,
1145 tr(
"Descriptor id:"),
1146 tr(
"Please, enter the "
1155 if(!descritorBases.size())
1157 emit
addEntity(
"descriptorBase", getHeadUid(), attrs,
false);
1160 if(!alredyExistentsDescriptorsIds.contains(newDescriptorID))
1162 Entity *descriptorBase =
1163 project->getEntitiesbyType(
"descriptorBase").at(0);
1164 attrs.insert(
"id", newDescriptorID);
1165 attrs.insert(
"region", region->getAttribute(
"id"));
1167 emit
addEntity(
"descriptor", descriptorBase->getUniqueId(), attrs,
1173 QMap <QString, QString>::iterator begin, end, it;
1174 media->getAttributeIterator(begin, end);
1175 for (it = begin; it != end; ++it)
1177 attrs[it.key()] = it.value();
1179 attrs[
"descriptor"] = newDescriptorID;
1184 else if (msgBox.clickedButton() == importPropButton)
1186 QMap <QString, QString> propertyNameToUID;
1187 QVector <Entity *> currentProperties = media->getChildren();
1188 for(
int i = 0; i < currentProperties.size(); i++)
1190 Entity *propEntity = currentProperties.at(i);
1191 if(propEntity->hasAttribute(
"name"))
1193 propertyNameToUID.insert(propEntity->getAttribute(
"name"),
1194 propEntity->getUniqueId());
1198 qDebug() <<
"Import attributes as properties of media element.";
1199 QMap <QString, QString> newAttrs = getRegionAttributes(region);
1201 foreach(key, newAttrs.keys())
1203 QMap <QString, QString> attrs;
1204 attrs.insert(
"name", key);
1205 attrs.insert(
"value", newAttrs.value(key));
1207 if(propertyNameToUID.keys().contains(key))
1209 QString propUID = propertyNameToUID.value(key);
1213 emit
addEntity(
"property", media->getUniqueId(), attrs,
false);
1220 qDebug() <<
"Creating a new descriptor";
1222 QMap <QString,QString> attrs;
1223 QList <Entity*> descritorBases =
1224 project->getEntitiesbyType(
"descriptorBase");
1227 QString newDescriptorID =
project->generateUniqueNCLId(
"descriptor");
1229 if(!descritorBases.size())
1231 emit
addEntity(
"descriptorBase", getHeadUid(), attrs,
false);
1233 Entity *descriptorBase =
1234 project->getEntitiesbyType(
"descriptorBase").at(0);
1235 attrs.insert(
"id", newDescriptorID);
1236 attrs.insert(
"region", region->getAttribute(
"id"));
1238 emit
addEntity(
"descriptor", descriptorBase->getUniqueId(), attrs,
false);
1242 QMap <QString, QString>::iterator begin, end, it;
1243 media->getAttributeIterator(begin, end);
1244 for (it = begin; it != end; ++it)
1246 attrs[it.key()] = it.value();
1248 attrs[
"descriptor"] = newDescriptorID;
1251 if(media->hasAttribute(
"type") &&
1252 media->getAttribute(
"type") ==
"text/html")
1255 QMap <QString, QString>::iterator begin, end, it;
1256 QList <Entity*> descriptors =
project->getEntityByAttrId(newDescriptorID);
1258 if(descriptors.size())
1260 Entity *desc = descriptors.at(0);
1261 desc->getAttributeIterator(begin, end);
1262 for (it = begin; it != end; ++it)
1264 attrs[it.key()] = it.value();
1266 attrs[
"focusIndex"] =
"1";
1267 if(descriptors.size())