#include "contentswidget.h" #include "ui_contentswidget.h" #include ContentsForm::ContentsForm(QWidget *parent) : QWidget(parent) , ui(new Ui::ContentsForm) { ui->setupUi(this); } ContentsForm::~ContentsForm() { delete ui; } QTreeWidgetItem *treeNode(QTreeWidgetItem *parent, const QDomNode &node) { auto *item = new QTreeWidgetItem(parent); item->setText(0, node.nodeName()); if(node.hasAttributes()) { const auto attr = node.attributes(); for(int i = 0; i < attr.length(); ++i) { const QString name = attr.item(i).nodeName(); const QString value = attr.item(i).nodeValue(); if(name == "Open") item->setText(1, value); else if(name == "Destination") item->setText(2, value); else qDebug("Unknown attribute name %s\nattr.value=%s", qUtf8Printable(name), qUtf8Printable(value)); } } auto child = node.firstChild(); while(!child.isNull()) { treeNode(item, child); child = child.nextSibling(); } return item; } void ContentsForm::setContents(QDomDocument *document) { ui->treeWidget->clear(); if(document && !document->isNull()) { auto node = document->firstChild(); while(!node.isNull()) { auto *item = treeNode(nullptr, node); ui->treeWidget->addTopLevelItem(item); node = node.nextSibling(); } } delete document; }