Ejemplo n.º 1
0
QVariant DomModel::data(const QModelIndex &index, int role) const
{
	if (!index.isValid())
		return QVariant();
	
	//role to get full xml path of index
	if(role == XPathRole)
	{
		QString wholeXmlPath;
		DomItem *item = static_cast<DomItem*>(index.internalPointer());
		if (item==NULL)
			qFatal("can't convert domitem from datamodel");
		
		for(;item->parent()!=NULL;item=item->parent())
		{
			wholeXmlPath=item->node().nodeName()+"/"+wholeXmlPath;
		}
		
		wholeXmlPath="/"+wholeXmlPath;
		return wholeXmlPath;
	}	
	else if (role == Qt::DisplayRole)
	{
		DomItem *item = static_cast<DomItem*>(index.internalPointer());
		
		QDomNode node = item->node();
		QStringList attributes;
		QDomNamedNodeMap attributeMap = node.attributes();
		
		switch (index.column())
		{
			//name
			case 0:
				return node.nodeName();
			//attributes
			case 1:
				for (int i = 0; i < attributeMap.count(); ++i)
				{
					QDomNode attribute = attributeMap.item(i);
					attributes << attribute.nodeName() + "=\""  +attribute.nodeValue() + "\"";
				}
				return attributes.join(" ");
			//value
			case 2:
				return node.nodeValue().split("\n").join(" ");
			default:
				return QVariant();
		}
	}
	else
		return QVariant();
}
void KUI_project::removeSlot()
{
  QModelIndex current = usersList->selectionModel()->currentIndex();
  
  DomItem *item = static_cast<DomItem*>( current.internalPointer() );

  
  if ( current.isValid() && item->node().nodeName()=="user" ) {
    qDebug() << "Removing: " << item->node().nodeName();
    model->removeRows( current.row(), 1, current.parent() );
  }
  
  usersList->update();
}
Ejemplo n.º 3
0
//! [3]
QVariant DomModel::data(const QModelIndex &index, int role) const
{
    if (!index.isValid())
        return QVariant();

    if (role != Qt::DisplayRole)
        return QVariant();

    DomItem *item = static_cast<DomItem*>(index.internalPointer());

    QDomNode node = item->node();
//! [3] //! [4]
    QStringList attributes;
    QDomNamedNodeMap attributeMap = node.attributes();

    switch (index.column()) {
        case 0:
            return node.nodeName();
        case 1:
            for (int i = 0; i < attributeMap.count(); ++i) {
                QDomNode attribute = attributeMap.item(i);
                attributes << attribute.nodeName() + "=\""
                              +attribute.nodeValue() + "\"";
            }
            return attributes.join(" ");
        case 2:
            return node.nodeValue().split("\n").join(" ");
        default:
            return QVariant();
    }
}
Ejemplo n.º 4
0
QVariant MetricDomModel::data(const QModelIndex &index, int role) const
{
    if (!index.isValid())
        return QVariant();

    if (role != Qt::DisplayRole)
        return QVariant();

    DomItem *item = static_cast<DomItem*>(index.internalPointer());

    QDomNode node = item->node();

    QStringList attributes;
    QDomNamedNodeMap attributeMap = node.attributes();

    switch (index.column()) {
        case 0:
            return node.nodeName();
        case 1:
        	if( !attributeMap.contains("Type") ) {
        		return QVariant();
        	}
        	return attributeMap.namedItem("Type").nodeValue();
        case 2:
        	if( !attributeMap.contains("Format") ) {
        		return QVariant();
        	}
        	return attributeMap.namedItem("Format").nodeValue();
        default:
            return QVariant();
    }
}
void KUI_project::addSlot()
{
  QModelIndex sessionIndex = model->index(0, 0,QModelIndex());
  DomItem *sessionItem = static_cast<DomItem*> ( sessionIndex.internalPointer() );
  qDebug() << sessionItem->node().nodeName();
  
  model->insertRows(0,1, sessionIndex);

  usersList->update();
}
Ejemplo n.º 6
0
int DomModel::rowCount(const QModelIndex &parent) const
{
	DomItem *parentItem;
	
	if (!parent.isValid())
		parentItem = rootItem;
	else
		parentItem = static_cast<DomItem*>(parent.internalPointer());
	
	return parentItem->node().childNodes().count();
}
int QAbstractXmlTreeModel::rowCount(const QModelIndex &parent) const
{
    DomItem *item = 0;

    if (!parent.isValid())
        item = dqaxtm->m_RootItem;
    else
        item = static_cast<DomItem*>(parent.internalPointer());

    return item->node().childNodes().count();
}
QDomNode QAbstractXmlTreeModel::node(const QModelIndex &index) const
{
    if (!index.isValid())
        return dqaxtm->m_RootNode;

    DomItem *domItem = static_cast<DomItem*>(index.internalPointer());

    if (!domItem)
        return dqaxtm->m_RootNode;

    return domItem->node();
}
Ejemplo n.º 9
0
// save to file
void MetricDomModel::SaveToFile(const QModelIndex& selectedItem, const QString& fileName) {
  QFile file( fileName );
  if( !file.open( QIODevice::WriteOnly ) ) {
	  printf("ERROR writing to file %s\n", fileName.toStdString().c_str());
	return ;
  }

    DomItem *item = static_cast<DomItem*>(selectedItem.internalPointer());
	vector<QDomNode> nodes;
	while(item) {
		nodes.push_back(item->node());
		item = item->parent();
	}

	SmartPtr<Named_interface> ni =
				Root::instance()->interface( metricData_manager + "/metricRegistrar");

	MetricDataManager* mDataRegistrar = (MetricDataManager*)(ni.raw_ptr());

	// create QDom
	QDomDocument doc("save");
	QDomElement root = doc.createElement( "MetricDataCollection" );
	doc.appendChild( root );
	
	if (nodes.size() == 4) {
		// save one property
		string metric_name = nodes[2].nodeName().toStdString();
		string grid_name = nodes[1].nodeName().toStdString();
		string property_name = nodes[0].nodeName().toStdString();
		AddQDomForProperty(mDataRegistrar, doc, root, metric_name,grid_name,property_name);
	} else if (nodes.size() == 3) {
		// save all properties in the grid
		string metric_name = nodes[1].nodeName().toStdString();
		string grid_name = nodes[0].nodeName().toStdString();
		string property_name;

		item = static_cast<DomItem*>(selectedItem.internalPointer());
		QHash<int,DomItem*>::iterator it;
		for (it = item->begin(); it != item->end(); ++it) {
			property_name = it.value()->node().nodeName().toStdString();
			AddQDomForProperty(mDataRegistrar, doc, root, metric_name,grid_name,property_name);
		}
		
	} else if (nodes.size() == 2) {
		// save all grids with these metric
		string metric_name = nodes[0].nodeName().toStdString();
		string grid_name;
		string property_name;
		DomItem* item1;

		item = static_cast<DomItem*>(selectedItem.internalPointer());
		QHash<int,DomItem*>::iterator it;
		QHash<int,DomItem*>::iterator it1;
		for (it = item->begin(); it != item->end(); ++it) {
			grid_name = it.value()->node().nodeName().toStdString();
			item1 = it.value();
			for (it1 = item1->begin(); it1 != item1->end(); ++it1) {
				property_name = it1.value()->node().nodeName().toStdString();
				AddQDomForProperty(mDataRegistrar, doc, root, metric_name,grid_name,property_name);
			}
		}
	}

  QTextStream ts( &file );
  ts << doc.toString();

  file.close();
}