From 03cb04bd435ddc5a637166d3188c45bb7391d6a0 Mon Sep 17 00:00:00 2001 From: Aqua-sama Date: Sat, 2 Mar 2019 17:57:16 +0200 Subject: Initial commit --- src/contentswidget/contentswidget.cpp | 61 +++++++++++++++++++++++++++++++++++ src/contentswidget/contentswidget.h | 25 ++++++++++++++ src/contentswidget/contentswidget.ui | 52 +++++++++++++++++++++++++++++ 3 files changed, 138 insertions(+) create mode 100644 src/contentswidget/contentswidget.cpp create mode 100644 src/contentswidget/contentswidget.h create mode 100644 src/contentswidget/contentswidget.ui (limited to 'src/contentswidget') diff --git a/src/contentswidget/contentswidget.cpp b/src/contentswidget/contentswidget.cpp new file mode 100644 index 0000000..40ea5f9 --- /dev/null +++ b/src/contentswidget/contentswidget.cpp @@ -0,0 +1,61 @@ +#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; +} + diff --git a/src/contentswidget/contentswidget.h b/src/contentswidget/contentswidget.h new file mode 100644 index 0000000..9276bf4 --- /dev/null +++ b/src/contentswidget/contentswidget.h @@ -0,0 +1,25 @@ +#ifndef CPDF_CONTENTSWIDGET_H +#define CPDF_CONTENTSWIDGET_H + +#include + +namespace Ui { + class ContentsForm; +} + +class QDomDocument; +class ContentsForm : public QWidget +{ + Q_OBJECT +public: + explicit ContentsForm(QWidget *parent = nullptr); + ~ContentsForm(); + +public slots: + void setContents(QDomDocument *document); + +private: + Ui::ContentsForm *ui = nullptr; +}; + +#endif // CPDF_CONTENTSWIDGET_H diff --git a/src/contentswidget/contentswidget.ui b/src/contentswidget/contentswidget.ui new file mode 100644 index 0000000..8b74c36 --- /dev/null +++ b/src/contentswidget/contentswidget.ui @@ -0,0 +1,52 @@ + + + ContentsForm + + + + 0 + 0 + 240 + 320 + + + + Contents + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + Item + + + + + Open + + + + + Destination + + + + + + + + + -- cgit v1.2.1