Exemple #1
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();
    }
}
bool Q3ListBoxExtraInfo::saveWidgetExtraInfo(DomWidget *ui_widget)
{
    Q3ListBox *listBox = qobject_cast<Q3ListBox*>(widget());
    Q_ASSERT(listBox != 0);

    QList<DomItem *> items;
    const int childCount = listBox->count();
    for (int i = 0; i < childCount; ++i) {
        DomItem *item = new DomItem();

        QList<DomProperty*> properties;

        DomString *str = new DomString();
        str->setText(listBox->text(i));

        DomProperty *ptext = new DomProperty();
        ptext->setAttributeName(QLatin1String("text"));
        ptext->setElementString(str);

        properties.append(ptext);
        item->setElementProperty(properties);
        items.append(item);
    }
    ui_widget->setElementItem(items);

    return true;
}
DomItem *Q3ListViewExtraInfo::saveQ3ListViewItem(Q3ListViewItem *item) const
{
    DomItem *pitem = new DomItem();
    QList<DomProperty *> properties;
    const int columnCount = static_cast<Q3ListView*>(widget())->columns();
    for (int i = 0; i < columnCount; ++i) {
        DomString *str = new DomString();
        str->setText(item->text(i));

        DomProperty *ptext = new DomProperty();
        ptext->setAttributeName(QLatin1String("text"));
        ptext->setElementString(str);

        properties.append(ptext);
    }
    pitem->setElementProperty(properties);
    QList<DomItem *> items;
    Q3ListViewItem *child = item->firstChild();
    while (child) {
        items.append(saveQ3ListViewItem(child));
        child = child->nextSibling();
    }
    pitem->setElementItem(items);
    return pitem;
}
void Q3ListViewExtraInfo::initializeQ3ListViewItems(const QList<DomItem *> &items, Q3ListViewItem *parentItem)
{
    for (int i=0; i<items.size(); ++i) {
        DomItem *item = items.at(i);

        Q3ListViewItem *__item = 0;
        if (parentItem != 0)
            __item = new Q3ListViewItem(parentItem);
        else
            __item = new Q3ListViewItem(static_cast<Q3ListView*>(widget()));

        int textCount = 0, pixCount = 0;
        QList<DomProperty*> properties = item->elementProperty();
        for (int i=0; i<properties.size(); ++i) {
            DomProperty *p = properties.at(i);
            if (p->attributeName() == QLatin1String("text"))
                __item->setText(textCount++, p->elementString()->text());

            if (p->attributeName() == QLatin1String("pixmap")) {
                DomResourcePixmap *pix = p->elementPixmap();
                QPixmap pixmap(core()->iconCache()->resolveQrcPath(pix->text(), pix->attributeResource(), workingDirectory()));
                __item->setPixmap(pixCount++, pixmap);
            }
        }

        if (item->elementItem().size()) {
            __item->setOpen(true);
            initializeQ3ListViewItems(item->elementItem(), __item);
        }
    }
}
//! [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();
    }
}
bool Q3ListBoxExtraInfo::loadWidgetExtraInfo(DomWidget *ui_widget)
{
    Q3ListBox *listBox = qobject_cast<Q3ListBox*>(widget());
    Q_ASSERT(listBox != 0);

    QList<DomItem *> items = ui_widget->elementItem();
    for (int i = 0; i < items.size(); ++i) {
        DomItem *item = items.at(i);

        QHash<QString, DomProperty*> properties = propertyMap(item->elementProperty());
        DomProperty *text = properties.value(QLatin1String("text"));
        DomProperty *pixmap = properties.value(QLatin1String("pixmap"));

        QString txt = text->elementString()->text();

        if (pixmap != 0) {
            DomResourcePixmap *pix = pixmap->elementPixmap();
            QPixmap pixmap(core()->iconCache()->resolveQrcPath(pix->text(), pix->attributeResource(), workingDirectory()));
            listBox->insertItem(pixmap, txt);
        } else {
            listBox->insertItem(txt);
        }
    }

    return true;
}
Exemple #7
0
QVariant DomModel::data(const QModelIndex &index, int role) const
{
    if (!index.isValid())
        return QVariant();
    DomItem *item = static_cast<DomItem*>(index.internalPointer());

    switch (role) {
        case Qt::UserRole:
            if (item->isFolder()) {
                return item->name();
            } else {
                return item->uuid();
            }
        break;
        case Qt::DisplayRole:
            return item->name();
        break;
        case Qt::DecorationRole:
            switch (type(index)) {
            case Folder:
                    return QVariant(QIcon(":/pic/folder.png"));
            case Favorite:
                    return QVariant(QIcon(":/pic/folder_favorite.png"));
            case Site:
                    return QVariant(QIcon(":/pic/tabpad.png"));
            }
        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();
}
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();
}
Exemple #10
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();
}
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();
}
UndoInsertCommand::UndoInsertCommand(QTreeWidget *theWidget, DomModel *newRegola, QList<int> newPath) : UndoBaseChangeElement(theWidget, newRegola, newPath)
{
    DomItem *selElement = regola->findItemByArray(path);
    if(NULL != selElement) {
        // copy data
        _element = new DomItem(NULL);
        if(NULL != _element) {
            // full copy
            selElement->copyTo(*_element);
        }
    }
}
//! [9]
QModelIndex DomModel::parent(const QModelIndex &child) const
{
    if (!child.isValid())
        return QModelIndex();

    DomItem *childItem = static_cast<DomItem*>(child.internalPointer());
    DomItem *parentItem = childItem->parent();

    if (!parentItem || parentItem == rootItem)
        return QModelIndex();

    return createIndex(parentItem->row(), 0, parentItem);
}
Exemple #14
0
bool DomModel::dropMimeData(const QMimeData *data,
    Qt::DropAction action, int row, int column, const QModelIndex &parent)
{
    if (action == Qt::IgnoreAction)
        return true;

    if (!data->hasFormat("text/plain"))
        return false;

    // Find out after which row to insert
    int beginRow;
    if (row != -1) // given
        beginRow = row;
    else if (parent.isValid()) // 1st of parent item
        beginRow = 0;
    else // last of the root item
        beginRow = rowCount(QModelIndex());

    DomItem *parentItem;
    if (!parent.isValid())
        parentItem = rootItem;
    else
        parentItem = static_cast<DomItem*>(parent.internalPointer());

    // Extract dropped items
    QByteArray encodedData = data->data("text/plain");
    QDataStream stream(&encodedData, QIODevice::ReadOnly);
    QList<DomItem*> newItems;
    while (!stream.atEnd()) {
        quintptr p;
        stream >> p;
        newItems << static_cast<DomItem*>((void *)p);
    }
    int count = newItems.count();

    switch(action) {
    case Qt::MoveAction:
        if (parentItem == rootItem)
            return false;
        for (int i=0; i<count; i++) {    
            DomItem *item = newItems.at(i);
            QDomElement node = item->element().cloneNode().toElement();
            DomItem *newItem = new DomItem(node);
            insertRow(beginRow, parent, newItem);
        }
        break;
    default:
        return false;
    }
    return true;
}
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();
}
Exemple #16
0
QModelIndex DomModel::index(int row, int column, const QModelIndex &parent) const
{
	DomItem *parentItem;
		
	if (!parent.isValid())
		parentItem = rootItem;
	else
		parentItem = static_cast<DomItem*>(parent.internalPointer());
	
	DomItem *childItem = parentItem->child(row);
	if (childItem)
		return createIndex(row, column, childItem);
	else
		return QModelIndex();
}
Exemple #17
0
int DomModel::rowCount(const QModelIndex &parent) const
{
    if (parent.column() > 0)
        return 0;

    DomItem *parentItem;
    int sitesCount = 0; // This is the number of site elements of root item
    if (!parent.isValid()) {
        parentItem = rootItem;
        sitesCount = domDocument.elementsByTagName("site").count();
    }
    else
        parentItem = static_cast<DomItem*>(parent.internalPointer());

    return parentItem->element().childNodes().count() - sitesCount;
}
Exemple #18
0
bool DomModel::insertRow(int row, const QModelIndex &parent, DomItem *item)
{
    DomItem *parentItem;

    if (!parent.isValid())
        parentItem = rootItem;
    else
        parentItem = static_cast<DomItem*>(parent.internalPointer());

    if (row < 0 || row > rowCount(parent))
        row = rowCount(parent);

    beginInsertRows(parent, row, row);
    parentItem->insertChild(row, item);
    endInsertRows();

    return true;
}
QModelIndex QAbstractXmlTreeModel::index(int row, int column, const QModelIndex &parent) const
{
    if (!hasIndex(row, column, parent))
        return QModelIndex();

    DomItem *parentItem;

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

    DomItem *childItem = parentItem->child(row);
    if (childItem)
        return createIndex(row, column, childItem);
    else
        return QModelIndex();
}
Exemple #20
0
bool DomModel::removeRows(int row, int count, const QModelIndex &parent)
{
    DomItem *parentItem;

    if (!parent.isValid())
        parentItem = rootItem;
    else
        parentItem = static_cast<DomItem*>(parent.internalPointer());

    if (row < 0 || row >= rowCount(parent))
        return false;
    
    beginRemoveRows(parent, row, row+count-1);
    for (int n=0; n<count; n++)
        parentItem->removeChild(row);
    endRemoveRows();

    return true;
}
Exemple #21
0
bool DomModel::setData(const QModelIndex &index,
                        const QVariant &value, int role)
{
    if (!index.isValid())
        return false;

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

    switch (role) {
        case Qt::EditRole:
            item->setName(value.toString());
            break;
        case Qt::UserRole:
            if (item->isFolder())
                item->setName(value.toString());
            else if (item->isSiteReference())
                item->setUuid(value.toString());
            break;
        default:
            return false;
    }

    emit dataChanged(index, index);
    return true;
}
Exemple #22
0
DomModel::ItemType DomModel::type(const QModelIndex &index) const
{
    if (!index.isValid())
        return Unknown;

    DomItem *item = static_cast<DomItem*>(index.internalPointer());
    if (item->isFolder())
        return Folder;
    else if (item->isSiteReference()) {
        QString uuid = data(index, Qt::UserRole).toString();
        // get favor attributes
        QDomNodeList siteList = domDocument.elementsByTagName("site");
        for (int i=0; i<siteList.count(); i++) {
            QDomElement element = siteList.item(i).toElement();
            if (element.attribute("uuid") == uuid)
                if (element.attribute("favor") == "1")
                    return Favorite;
                else
                    return Site;
        }
    }
    return Unknown;
}
void Q3IconViewExtraInfo::initializeQ3IconViewItems(const QList<DomItem *> &items)
{
    Q3IconView *iconView = qobject_cast<Q3IconView*>(widget());
    Q_ASSERT(iconView != 0);

    for (int i=0; i<items.size(); ++i) {
        DomItem *item = items.at(i);

        Q3IconViewItem *__item = new Q3IconViewItem(iconView);

        QList<DomProperty*> properties = item->elementProperty();
        for (int i=0; i<properties.size(); ++i) {
            DomProperty *p = properties.at(i);
            if (p->attributeName() == QLatin1String("text"))
                __item->setText(p->elementString()->text());

            if (p->attributeName() == QLatin1String("pixmap")) {
                DomResourcePixmap *pix = p->elementPixmap();
                QPixmap pixmap(core()->iconCache()->resolveQrcPath(pix->text(), pix->attributeResource(), workingDirectory()));
                __item->setPixmap(pixmap);
            }
        }
    }
}
Exemple #24
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();
}
Exemple #25
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();
}