void MainWindow::on_extractBtn_clicked() { QString msg = ui->inputTxt->text(); if (msg.isEmpty()) return; isoExtract->process(msg); QTreeWidget* tree = ui->resultTree; tree->clear(); QTreeWidgetItem *parentItem = new QTreeWidgetItem(tree,QStringList(isoExtract->msgType)); QList<QTreeWidgetItem *> items; QMap<int, IsoField*> isoMsgMap = isoExtract->isoMessage; QMapIterator<int, IsoField*> i(isoMsgMap); while (i.hasNext()) { i.next(); QStringList bitmsg; bitmsg << QString("Bit %1").arg(i.key()) << i.value()->lengthType << i.value()->value; items.append(new QTreeWidgetItem((QTreeWidget*)0, bitmsg)); } parentItem->addChildren(items); tree->expandItem(parentItem); // tree->setSelectionMode(QAbstractItemView::ExtendedSelection); }
QTreeWidgetItem* LOCACC::generateScreenTree(QJsonObject screenJObj) { QStringList treeList; treeList << screenJObj["id"].toString(); QTreeWidgetItem *screenItemWidget = new QTreeWidgetItem(treeList); screenItemWidget->addChildren(generateElementsTree(screenJObj)); return screenItemWidget; }
void LibraryTreeWidget::sort() { QTreeWidgetItem* root = invisibleRootItem(); if (selectedItems().empty() == false) root = selectedItems()[0]; QList<QTreeWidgetItem*> children = root->takeChildren(); std::sort(children.begin(), children.end(), LessQTreeWidgetItem()); root->addChildren(children); }
static QList<QTreeWidgetItem *> binresToQList(binresult *res){ QList<QTreeWidgetItem *> items; QTreeWidgetItem *item; binresult *e; quint32 i; for (i=0; i<res->length; i++){ e=res->array[i]; item=new QTreeWidgetItem((QTreeWidget*)0, QStringList(QString(find_res(e, "name")->str))); item->setData(1, Qt::UserRole, (qulonglong)find_res(e, "folderid")->num); item->addChildren(binresToQList(find_res(e, "contents"))); items.append(item); } return items; }
QTreeWidgetItem* XPathInspector::createTree(QWebElement root) { QString js = "var arr = []; "; js += "for (var i=0; i<this.childNodes.length; i++) "; js += " if (this.childNodes[i].nodeType == 3 && this.childNodes[i].nodeValue.replace(/^\\s+|\\s+$/g,'') != '') "; js += " arr.push(this.childNodes[i].nodeValue); "; js += " else if (this.childNodes[i].nodeType == 1)"; js += " arr.push(this.childNodes[i].tagName); "; js += "arr; "; QVariant v = root.evaluateJavaScript(js); QStringList nodes = v.toStringList(); QWebElement child = root.firstChild(); QList<QTreeWidgetItem*> list; int i = 0; while (!(i>=nodes.count() && child.isNull())) { while (i<nodes.count() && nodes.at(i) != child.tagName()) { QTreeWidgetItem *item2 = new QTreeWidgetItem(); item2->setText(0, nodes.at(i)); list.append(item2); i++; } if (!child.isNull()) { list.append(createTree(child)); child = child.nextSibling(); i++; } } QString text = "<"+root.tagName().toLower(); QStringList attrs = root.attributeNames(); for (int i=0; i<attrs.count(); i++) text += " "+attrs.at(i)+"=\""+root.attribute(attrs.at(i))+"\""; text += ">"; QTreeWidgetItem *item = new QTreeWidgetItem(); item->setText(0, text); QVariant v2(QVariant::UserType); v2.setValue<QWebElement>(root); item->setData(0, Qt::UserRole, v2); item->addChildren(list); return item; }
QList<QTreeWidgetItem *> LOCACC::generateElementsTree(QJsonObject screenJObj) { QStringList treeList; QJsonObject eleJObject; QList<QTreeWidgetItem *> eleTreeItemlist; QJsonArray eleJArray = screenJObj["elements"].toArray(); for(int i = 0 ; i < eleJArray.count(); i++) { treeList.clear(); eleJObject = eleJArray.at(i).toObject(); treeList << eleJObject["id"].toString(); QTreeWidgetItem *ele = new QTreeWidgetItem(treeList); // qDebug() << eleJArray.at(i).toString(); eleTreeItemlist.append(ele); ele->addChildren(generateMessageTree(eleJObject["messages"].toArray())); } return eleTreeItemlist; }
void EffectsListWidget::createTopLevelItems(QList <QTreeWidgetItem *>list, int effectType) { // Favorites is a pseudo-folder used to store items, not visible to end user, so don't i18n its name QTreeWidgetItem *misc = findFolder(QStringLiteral("TemporaryFolder")); if (misc == NULL) { misc = new QTreeWidgetItem(this, QStringList(QStringLiteral("TemporaryFolder"))); misc->setData(0, TypeRole, QString::number((int) EffectsList::EFFECT_FOLDER)); misc->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); } else qDeleteAll(misc->takeChildren()); setIndentation(0); misc->addChildren(list); for (int j = 0; j < misc->childCount(); ++j) { QTreeWidgetItem *child = misc->child(j); child->setHidden(false); child->setData(0, Qt::UserRole, effectType); } setRootIndex(indexFromItem(misc)); }
static QTreeWidgetItem * variantToItem(const QString &key, const QVariant &var, const QVariant &defaultVar) { if (var == defaultVar) { return NULL; } QString val; bool deep = isVariantDeep(var); if (!deep) { variantToString(var, val); } //qDebug()<<"key = "<<key; //qDebug()<<"val = "<<val; QStringList lst; lst += key; lst += val; QTreeWidgetItem *item = new QTreeWidgetItem((QTreeWidgetItem *)0, lst); if (deep) { QList<QTreeWidgetItem *> children; if (var.type() == QVariant::Map) { QVariantMap map = var.toMap(); QVariantMap defaultMap = defaultVar.toMap(); variantMapToItems(map, defaultMap, children); } if (var.type() == QVariant::List) { QVector<QVariant> lst = var.toList().toVector(); QVector<QVariant> defaultLst = defaultVar.toList().toVector(); variantListToItems(lst, defaultLst, children); } item->addChildren(children); } return item; }
bool ProtobufTree::addTreeData(QTreeWidgetItem* parent, const google::protobuf::Message& msg) { const Reflection* ref = msg.GetReflection(); // Get fields in the message vector<const FieldDescriptor*> fields; ref->ListFields(msg, &fields); // Get map of field numbers to child items FieldMap fieldMap = parent->data(Column_Tag, FieldMapRole).value<FieldMap>(); bool newFields = false; // Clear data for missing fields const Descriptor* desc = msg.GetDescriptor(); for (FieldMap::const_iterator i = fieldMap.begin(); i != fieldMap.end(); ++i) { const FieldDescriptor* field = desc->FindFieldByNumber(i.key()); if (!field) { // Field has left the descriptor - should never happen printf("Lost field %s.%d\n", desc->name().c_str(), i.key()); continue; } QTreeWidgetItem* item = i.value(); bool hasData; if (field->is_repeated()) { hasData = ref->FieldSize(msg, field); if (!hasData && item->childCount()) { // Remove and delete children for (QTreeWidgetItem* child : item->takeChildren()) { delete child; } } } else { hasData = ref->HasField(msg, field); } if (!hasData) { item->setText(Column_Value, QString()); item->setData(Column_Value, Qt::CheckStateRole, QVariant()); } } for (const FieldDescriptor* field : fields) { // Get the item for this field if the field has been seen before QTreeWidgetItem* item; FieldMap::iterator fieldIter = fieldMap.find(field->number()); if (fieldIter != fieldMap.end()) { // Field is already in parent item = *fieldIter; } else { // New field item = new QTreeWidgetItem(parent); fieldMap.insert(field->number(), item); item->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); parent->setData(Column_Tag, FieldMapRole, QVariant::fromValue<FieldMap>(fieldMap)); item->setData(Column_Tag, Qt::DisplayRole, field->number()); item->setData(Column_Tag, FieldDescriptorRole, QVariant::fromValue(field)); item->setText(Column_Field, QString::fromStdString(field->name())); if (field->type() == FieldDescriptor::TYPE_MESSAGE && !field->is_repeated()) { // Singular messages are expanded by default expandItem(item); } newFields = true; } if (field->is_repeated()) { // Repeated field int n = ref->FieldSize(msg, field); // Show the number of elements as the value for the field itself item->setData(Column_Value, Qt::DisplayRole, n); // Make sure we have enough children int children = item->childCount(); if (children < n) { // Add children for (int i = children; i < n; ++i) { QTreeWidgetItem* child = new QTreeWidgetItem(item); child->setText(Column_Field, QString("[%1]").arg(i)); child->setData(Column_Tag, FieldDescriptorRole, field); // For repeated items, the tag column holds the index in the // field child->setData(Column_Tag, Qt::DisplayRole, i); // A FieldMap is not used here because the items don't // actually have tags. The item's position in its parent is // its position in the repeated field. } newFields = true; } else if (children > n) { // Remove excess children // Internally, QTreeWidgetItem stores a QList of children. // Hopefully this is efficient. QList<QTreeWidgetItem*> kids = item->takeChildren(); for (int i = 0; i < (children - n); ++i) { delete kids.back(); kids.pop_back(); } item->addChildren(kids); } // Set data for children for (int i = 0; i < n; ++i) { QTreeWidgetItem* child = item->child(i); switch (field->type()) { case FieldDescriptor::TYPE_INT32: case FieldDescriptor::TYPE_SINT32: case FieldDescriptor::TYPE_FIXED32: case FieldDescriptor::TYPE_SFIXED32: child->setData(Column_Value, Qt::DisplayRole, ref->GetRepeatedInt32(msg, field, i)); break; case FieldDescriptor::TYPE_INT64: case FieldDescriptor::TYPE_SINT64: case FieldDescriptor::TYPE_FIXED64: case FieldDescriptor::TYPE_SFIXED64: child->setData( Column_Value, Qt::DisplayRole, (qlonglong)ref->GetRepeatedInt64(msg, field, i)); break; case FieldDescriptor::TYPE_UINT32: child->setData(Column_Value, Qt::DisplayRole, ref->GetRepeatedUInt32(msg, field, i)); break; case FieldDescriptor::TYPE_UINT64: child->setData( Column_Value, Qt::DisplayRole, (qulonglong)ref->GetRepeatedUInt64(msg, field, i)); break; case FieldDescriptor::TYPE_FLOAT: child->setData(Column_Value, Qt::DisplayRole, ref->GetRepeatedFloat(msg, field, i)); break; case FieldDescriptor::TYPE_DOUBLE: child->setData(Column_Value, Qt::DisplayRole, ref->GetRepeatedDouble(msg, field, i)); break; case FieldDescriptor::TYPE_BOOL: child->setCheckState(Column_Value, ref->GetRepeatedBool(msg, field, i) ? Qt::Checked : Qt::Unchecked); break; case FieldDescriptor::TYPE_ENUM: { const EnumValueDescriptor* ev = ref->GetRepeatedEnum(msg, field, i); child->setText(Column_Value, QString::fromStdString(ev->name())); break; } case FieldDescriptor::TYPE_STRING: child->setText(Column_Value, QString::fromStdString( ref->GetRepeatedString( msg, field, i))); break; case FieldDescriptor::TYPE_MESSAGE: child->setData(Column_Tag, IsMessageRole, true); newFields |= addTreeData( child, ref->GetRepeatedMessage(msg, field, i)); break; case FieldDescriptor::TYPE_BYTES: addBytes(child, ref->GetRepeatedString(msg, field, i)); break; default: child->setText(Column_Value, QString("??? %1").arg(field->type())); break; } } } else switch (field->type()) { case FieldDescriptor::TYPE_INT32: case FieldDescriptor::TYPE_SINT32: case FieldDescriptor::TYPE_FIXED32: case FieldDescriptor::TYPE_SFIXED32: item->setData(Column_Value, Qt::DisplayRole, ref->GetInt32(msg, field)); break; case FieldDescriptor::TYPE_INT64: case FieldDescriptor::TYPE_SINT64: case FieldDescriptor::TYPE_FIXED64: case FieldDescriptor::TYPE_SFIXED64: item->setData(Column_Value, Qt::DisplayRole, (qlonglong)ref->GetInt64(msg, field)); break; case FieldDescriptor::TYPE_UINT32: item->setData(Column_Value, Qt::DisplayRole, ref->GetUInt32(msg, field)); break; case FieldDescriptor::TYPE_UINT64: item->setData(Column_Value, Qt::DisplayRole, (qulonglong)ref->GetUInt64(msg, field)); break; case FieldDescriptor::TYPE_FLOAT: item->setData(Column_Value, Qt::DisplayRole, ref->GetFloat(msg, field)); break; case FieldDescriptor::TYPE_DOUBLE: item->setData(Column_Value, Qt::DisplayRole, ref->GetDouble(msg, field)); break; case FieldDescriptor::TYPE_BOOL: item->setCheckState(Column_Value, ref->GetBool(msg, field) ? Qt::Checked : Qt::Unchecked); break; case FieldDescriptor::TYPE_ENUM: { const EnumValueDescriptor* ev = ref->GetEnum(msg, field); item->setText(Column_Value, QString::fromStdString(ev->name())); break; } case FieldDescriptor::TYPE_STRING: item->setText( Column_Value, QString::fromStdString(ref->GetString(msg, field))); break; case FieldDescriptor::TYPE_MESSAGE: item->setData(Column_Tag, IsMessageRole, true); newFields |= addTreeData(item, ref->GetMessage(msg, field)); break; case FieldDescriptor::TYPE_BYTES: addBytes(item, ref->GetString(msg, field)); break; default: item->setText(Column_Value, QString("??? %1").arg(field->type())); break; } } return newFields; }
void QTreeWidgetItemProto::addChildren(const QList<QTreeWidgetItem *> &children) { QTreeWidgetItem *item = qscriptvalue_cast<QTreeWidgetItem*>(thisObject()); if (item) item->addChildren(children); }