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; }
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(); }
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); }
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(); }
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(); }
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; }
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(); }
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; }
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; }
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); } } } }
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(); }
// 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(); }