summaryrefslogtreecommitdiffstats
path: root/examples/xml
diff options
context:
space:
mode:
authorDavid Boddie <dboddie@trolltech.com>2009-08-19 14:36:23 (GMT)
committerDavid Boddie <dboddie@trolltech.com>2009-08-19 14:36:23 (GMT)
commitf599d1fc571b392ab374cfe8b4952e9536e0bff2 (patch)
tree33ae1d9b6b3f28279bcd3f26b0f8253d0968a86c /examples/xml
parent551a03486262804567e726962b93b41ded002205 (diff)
parent555fafe46e26b352e9d8ab5586910591761ab5ad (diff)
downloadQt-f599d1fc571b392ab374cfe8b4952e9536e0bff2.zip
Qt-f599d1fc571b392ab374cfe8b4952e9536e0bff2.tar.gz
Qt-f599d1fc571b392ab374cfe8b4952e9536e0bff2.tar.bz2
Merge branch 'master' of git@scm.dev.nokia.troll.no:qt/qt
Diffstat (limited to 'examples/xml')
-rw-r--r--examples/xml/streambookmarks/mainwindow.cpp4
-rw-r--r--examples/xml/streambookmarks/xbelreader.cpp129
-rw-r--r--examples/xml/streambookmarks/xbelreader.h6
-rw-r--r--examples/xml/streambookmarks/xbelwriter.cpp32
-rw-r--r--examples/xml/streambookmarks/xbelwriter.h3
5 files changed, 73 insertions, 101 deletions
diff --git a/examples/xml/streambookmarks/mainwindow.cpp b/examples/xml/streambookmarks/mainwindow.cpp
index 183143d..5aef327 100644
--- a/examples/xml/streambookmarks/mainwindow.cpp
+++ b/examples/xml/streambookmarks/mainwindow.cpp
@@ -91,10 +91,8 @@ void MainWindow::open()
XbelReader reader(treeWidget);
if (!reader.read(&file)) {
QMessageBox::warning(this, tr("QXmlStream Bookmarks"),
- tr("Parse error in file %1 at line %2, column %3:\n%4")
+ tr("Parse error in file %1:\n\n%2")
.arg(fileName)
- .arg(reader.lineNumber())
- .arg(reader.columnNumber())
.arg(reader.errorString()));
} else {
statusBar()->showMessage(tr("File loaded"), 2000);
diff --git a/examples/xml/streambookmarks/xbelreader.cpp b/examples/xml/streambookmarks/xbelreader.cpp
index 47c8c3d..0770643 100644
--- a/examples/xml/streambookmarks/xbelreader.cpp
+++ b/examples/xml/streambookmarks/xbelreader.cpp
@@ -60,61 +60,43 @@ XbelReader::XbelReader(QTreeWidget *treeWidget)
//! [1]
bool XbelReader::read(QIODevice *device)
{
- setDevice(device);
+ xml.setDevice(device);
- while (!atEnd()) {
- readNext();
-
- if (isStartElement()) {
- if (name() == "xbel" && attributes().value("version") == "1.0")
- readXBEL();
- else
- raiseError(QObject::tr("The file is not an XBEL version 1.0 file."));
- }
+ if (xml.readNextStartElement()) {
+ if (xml.name() == "xbel" && xml.attributes().value("version") == "1.0")
+ readXBEL();
+ else
+ xml.raiseError(QObject::tr("The file is not an XBEL version 1.0 file."));
}
- return !error();
+ return !xml.error();
}
//! [1]
//! [2]
-void XbelReader::readUnknownElement()
+QString XbelReader::errorString() const
{
- Q_ASSERT(isStartElement());
-
- while (!atEnd()) {
- readNext();
-
- if (isEndElement())
- break;
-
- if (isStartElement())
- readUnknownElement();
- }
+ return QObject::tr("%1\nLine %2, column %3")
+ .arg(xml.errorString())
+ .arg(xml.lineNumber())
+ .arg(xml.columnNumber());
}
//! [2]
//! [3]
void XbelReader::readXBEL()
{
- Q_ASSERT(isStartElement() && name() == "xbel");
-
- while (!atEnd()) {
- readNext();
-
- if (isEndElement())
- break;
-
- if (isStartElement()) {
- if (name() == "folder")
- readFolder(0);
- else if (name() == "bookmark")
- readBookmark(0);
- else if (name() == "separator")
- readSeparator(0);
- else
- readUnknownElement();
- }
+ Q_ASSERT(xml.isStartElement() && xml.name() == "xbel");
+
+ while (xml.readNextStartElement()) {
+ if (xml.name() == "folder")
+ readFolder(0);
+ else if (xml.name() == "bookmark")
+ readBookmark(0);
+ else if (xml.name() == "separator")
+ readSeparator(0);
+ else
+ xml.skipCurrentElement();
}
}
//! [3]
@@ -122,9 +104,9 @@ void XbelReader::readXBEL()
//! [4]
void XbelReader::readTitle(QTreeWidgetItem *item)
{
- Q_ASSERT(isStartElement() && name() == "title");
+ Q_ASSERT(xml.isStartElement() && xml.name() == "title");
- QString title = readElementText();
+ QString title = xml.readElementText();
item->setText(0, title);
}
//! [4]
@@ -132,63 +114,52 @@ void XbelReader::readTitle(QTreeWidgetItem *item)
//! [5]
void XbelReader::readSeparator(QTreeWidgetItem *item)
{
+ Q_ASSERT(xml.isStartElement() && xml.name() == "separator");
+
QTreeWidgetItem *separator = createChildItem(item);
separator->setFlags(item->flags() & ~Qt::ItemIsSelectable);
separator->setText(0, QString(30, 0xB7));
- readElementText();
+ xml.skipCurrentElement();
}
//! [5]
void XbelReader::readFolder(QTreeWidgetItem *item)
{
- Q_ASSERT(isStartElement() && name() == "folder");
+ Q_ASSERT(xml.isStartElement() && xml.name() == "folder");
QTreeWidgetItem *folder = createChildItem(item);
- bool folded = (attributes().value("folded") != "no");
+ bool folded = (xml.attributes().value("folded") != "no");
treeWidget->setItemExpanded(folder, !folded);
- while (!atEnd()) {
- readNext();
-
- if (isEndElement())
- break;
-
- if (isStartElement()) {
- if (name() == "title")
- readTitle(folder);
- else if (name() == "folder")
- readFolder(folder);
- else if (name() == "bookmark")
- readBookmark(folder);
- else if (name() == "separator")
- readSeparator(folder);
- else
- readUnknownElement();
- }
+ while (xml.readNextStartElement()) {
+ if (xml.name() == "title")
+ readTitle(folder);
+ else if (xml.name() == "folder")
+ readFolder(folder);
+ else if (xml.name() == "bookmark")
+ readBookmark(folder);
+ else if (xml.name() == "separator")
+ readSeparator(folder);
+ else
+ xml.skipCurrentElement();
}
}
void XbelReader::readBookmark(QTreeWidgetItem *item)
{
- Q_ASSERT(isStartElement() && name() == "bookmark");
+ Q_ASSERT(xml.isStartElement() && xml.name() == "bookmark");
QTreeWidgetItem *bookmark = createChildItem(item);
bookmark->setFlags(bookmark->flags() | Qt::ItemIsEditable);
bookmark->setIcon(0, bookmarkIcon);
bookmark->setText(0, QObject::tr("Unknown title"));
- bookmark->setText(1, attributes().value("href").toString());
- while (!atEnd()) {
- readNext();
-
- if (isEndElement())
- break;
-
- if (isStartElement()) {
- if (name() == "title")
- readTitle(bookmark);
- else
- readUnknownElement();
- }
+ bookmark->setText(1, xml.attributes().value("href").toString());
+
+ while (xml.readNextStartElement()) {
+ if (xml.name() == "title")
+ readTitle(bookmark);
+ else
+ xml.skipCurrentElement();
}
}
@@ -200,6 +171,6 @@ QTreeWidgetItem *XbelReader::createChildItem(QTreeWidgetItem *item)
} else {
childItem = new QTreeWidgetItem(treeWidget);
}
- childItem->setData(0, Qt::UserRole, name().toString());
+ childItem->setData(0, Qt::UserRole, xml.name().toString());
return childItem;
}
diff --git a/examples/xml/streambookmarks/xbelreader.h b/examples/xml/streambookmarks/xbelreader.h
index 80f0a28..00d5850 100644
--- a/examples/xml/streambookmarks/xbelreader.h
+++ b/examples/xml/streambookmarks/xbelreader.h
@@ -51,7 +51,7 @@ class QTreeWidgetItem;
QT_END_NAMESPACE
//! [0]
-class XbelReader : public QXmlStreamReader
+class XbelReader
{
public:
//! [1]
@@ -60,9 +60,10 @@ public:
bool read(QIODevice *device);
+ QString errorString() const;
+
private:
//! [2]
- void readUnknownElement();
void readXBEL();
void readTitle(QTreeWidgetItem *item);
void readSeparator(QTreeWidgetItem *item);
@@ -71,6 +72,7 @@ private:
QTreeWidgetItem *createChildItem(QTreeWidgetItem *item);
+ QXmlStreamReader xml;
QTreeWidget *treeWidget;
//! [2]
diff --git a/examples/xml/streambookmarks/xbelwriter.cpp b/examples/xml/streambookmarks/xbelwriter.cpp
index 3a2862a..58757f5 100644
--- a/examples/xml/streambookmarks/xbelwriter.cpp
+++ b/examples/xml/streambookmarks/xbelwriter.cpp
@@ -47,23 +47,23 @@
XbelWriter::XbelWriter(QTreeWidget *treeWidget)
: treeWidget(treeWidget)
{
- setAutoFormatting(true);
+ xml.setAutoFormatting(true);
}
//! [0]
//! [1]
bool XbelWriter::writeFile(QIODevice *device)
{
- setDevice(device);
+ xml.setDevice(device);
- writeStartDocument();
- writeDTD("<!DOCTYPE xbel>");
- writeStartElement("xbel");
- writeAttribute("version", "1.0");
+ xml.writeStartDocument();
+ xml.writeDTD("<!DOCTYPE xbel>");
+ xml.writeStartElement("xbel");
+ xml.writeAttribute("version", "1.0");
for (int i = 0; i < treeWidget->topLevelItemCount(); ++i)
writeItem(treeWidget->topLevelItem(i));
- writeEndDocument();
+ xml.writeEndDocument();
return true;
}
//! [1]
@@ -74,20 +74,20 @@ void XbelWriter::writeItem(QTreeWidgetItem *item)
QString tagName = item->data(0, Qt::UserRole).toString();
if (tagName == "folder") {
bool folded = !treeWidget->isItemExpanded(item);
- writeStartElement(tagName);
- writeAttribute("folded", folded ? "yes" : "no");
- writeTextElement("title", item->text(0));
+ xml.writeStartElement(tagName);
+ xml.writeAttribute("folded", folded ? "yes" : "no");
+ xml.writeTextElement("title", item->text(0));
for (int i = 0; i < item->childCount(); ++i)
writeItem(item->child(i));
- writeEndElement();
+ xml.writeEndElement();
} else if (tagName == "bookmark") {
- writeStartElement(tagName);
+ xml.writeStartElement(tagName);
if (!item->text(1).isEmpty())
- writeAttribute("href", item->text(1));
- writeTextElement("title", item->text(0));
- writeEndElement();
+ xml.writeAttribute("href", item->text(1));
+ xml.writeTextElement("title", item->text(0));
+ xml.writeEndElement();
} else if (tagName == "separator") {
- writeEmptyElement(tagName);
+ xml.writeEmptyElement(tagName);
}
}
//! [2]
diff --git a/examples/xml/streambookmarks/xbelwriter.h b/examples/xml/streambookmarks/xbelwriter.h
index 29a8b04..b74d015 100644
--- a/examples/xml/streambookmarks/xbelwriter.h
+++ b/examples/xml/streambookmarks/xbelwriter.h
@@ -50,7 +50,7 @@ class QTreeWidgetItem;
QT_END_NAMESPACE
//! [0]
-class XbelWriter : public QXmlStreamWriter
+class XbelWriter
{
public:
XbelWriter(QTreeWidget *treeWidget);
@@ -58,6 +58,7 @@ public:
private:
void writeItem(QTreeWidgetItem *item);
+ QXmlStreamWriter xml;
QTreeWidget *treeWidget;
};
//! [0]