3
3
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "DTD/xhtml1-strict.dtd">
4
4
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
6
<title>Qt 4.5: xbelreader.cpp Example File (xml/streambookmarks/xbelreader.cpp)</title>
6
<title>Qt 4.6: xbelreader.cpp Example File (xml/streambookmarks/xbelreader.cpp)</title>
7
7
<link href="classic.css" rel="stylesheet" type="text/css" />
10
10
<table border="0" cellpadding="0" cellspacing="0" width="100%">
12
<td align="left" valign="top" width="32"><a href="http://qtsoftware.com/products/qt"><img src="images/qt-logo.png" align="left" border="0" /></a></td>
13
<td width="1"> </td><td class="postheader" valign="center"><a href="index.html"><font color="#004faf">Home</font></a> · <a href="namespaces.html"><font color="#004faf">All Namespaces</font></a> · <a href="classes.html"><font color="#004faf">All Classes</font></a> · <a href="mainclasses.html"><font color="#004faf">Main Classes</font></a> · <a href="groups.html"><font color="#004faf">Grouped Classes</font></a> · <a href="modules.html"><font color="#004faf">Modules</font></a> · <a href="functions.html"><font color="#004faf">Functions</font></a></td>
14
<td align="right" valign="top" width="230"></td></tr></table><h1 class="title">xbelreader.cpp Example File<br /><span class="small-subtitle">xml/streambookmarks/xbelreader.cpp</span>
12
<td align="left" valign="top" width="32"><a href="http://qt.nokia.com/"><img src="images/qt-logo.png" align="left" border="0" /></a></td>
13
<td width="1"> </td><td class="postheader" valign="center"><a href="index.html"><font color="#004faf">Home</font></a> · <a href="classes.html"><font color="#004faf">All Classes</font></a> · <a href="functions.html"><font color="#004faf">All Functions</font></a> · <a href="overviews.html"><font color="#004faf">Overviews</font></a></td><td class="searchBar" align="right" valign="center"><form action="http://www.google.com/cse" id="cse-search-box"><div><input type="hidden" name="cx" value="000136343326384750312:dhbxnqlakyu" /><input type="hidden" name="ie" value="UTF-8" /><input type="text" name="q" size="31" /><input type="submit" name="sa" value="Search" /></div></form></td>
14
</tr></table><h1 class="title">xbelreader.cpp Example File<br /><span class="small-subtitle">xml/streambookmarks/xbelreader.cpp</span>
16
16
<pre><span class="comment"> /****************************************************************************
18
18
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
19
** All rights reserved.
19
20
** Contact: Nokia Corporation (qt-info@nokia.com)
21
22
** This file is part of the examples of the Qt Toolkit.
23
24
** $QT_BEGIN_LICENSE:LGPL$
25
** Licensees holding valid Qt Commercial licenses may use this file in
26
** accordance with the Qt Commercial License Agreement provided with the
27
** Software or, alternatively, in accordance with the terms contained in
28
** a written agreement between you and Nokia.
25
** No Commercial Usage
26
** This file contains pre-release code and may not be distributed.
27
** You may use this file in accordance with the terms and conditions
28
** contained in the Technology Preview License Agreement accompanying
30
31
** GNU Lesser General Public License Usage
31
32
** Alternatively, this file may be used under the terms of the GNU Lesser
35
36
** ensure the GNU Lesser General Public License version 2.1 requirements
36
37
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
38
** In addition, as a special exception, Nokia gives you certain
39
** additional rights. These rights are described in the Nokia Qt LGPL
40
** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
43
** GNU General Public License Usage
44
** Alternatively, this file may be used under the terms of the GNU
45
** General Public License version 3.0 as published by the Free Software
46
** Foundation and appearing in the file LICENSE.GPL included in the
47
** packaging of this file. Please review the following information to
48
** ensure the GNU General Public License version 3.0 requirements will be
49
** met: http://www.gnu.org/copyleft/gpl.html.
51
** If you are unsure which license is appropriate for your use, please
52
** contact the sales department at http://www.qtsoftware.com/contact.
39
** In addition, as a special exception, Nokia gives you certain additional
40
** rights. These rights are described in the Nokia Qt LGPL Exception
41
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
43
** If you have questions regarding the use of this file, please contact
44
** Nokia at qt-info@nokia.com.
53
53
** $QT_END_LICENSE$
55
55
****************************************************************************/</span>
73
73
bool XbelReader::read(QIODevice *device)
80
if (isStartElement()) {
81
if (name() == "xbel" && attributes().value("version") == "1.0")
84
raiseError(QObject::tr("The file is not an XBEL version 1.0 file."));
75
xml.setDevice(device);
77
if (xml.readNextStartElement()) {
78
if (xml.name() == "xbel" && xml.attributes().value("version") == "1.0")
81
xml.raiseError(QObject::tr("The file is not an XBEL version 1.0 file."));
91
void XbelReader::readUnknownElement()
87
QString XbelReader::errorString() const
93
Q_ASSERT(isStartElement());
101
if (isStartElement())
102
readUnknownElement();
89
return QObject::tr("%1\nLine %2, column %3")
90
.arg(xml.errorString())
91
.arg(xml.lineNumber())
92
.arg(xml.columnNumber());
106
95
void XbelReader::readXBEL()
108
Q_ASSERT(isStartElement() && name() == "xbel");
116
if (isStartElement()) {
117
if (name() == "folder")
119
else if (name() == "bookmark")
121
else if (name() == "separator")
124
readUnknownElement();
97
Q_ASSERT(xml.isStartElement() && xml.name() == "xbel");
99
while (xml.readNextStartElement()) {
100
if (xml.name() == "folder")
102
else if (xml.name() == "bookmark")
104
else if (xml.name() == "separator")
107
xml.skipCurrentElement();
129
111
void XbelReader::readTitle(QTreeWidgetItem *item)
131
Q_ASSERT(isStartElement() && name() == "title");
113
Q_ASSERT(xml.isStartElement() && xml.name() == "title");
133
QString title = readElementText();
115
QString title = xml.readElementText();
134
116
item->setText(0, title);
137
119
void XbelReader::readSeparator(QTreeWidgetItem *item)
121
Q_ASSERT(xml.isStartElement() && xml.name() == "separator");
139
123
QTreeWidgetItem *separator = createChildItem(item);
140
124
separator->setFlags(item->flags() & ~Qt::ItemIsSelectable);
141
125
separator->setText(0, QString(30, 0xB7));
126
xml.skipCurrentElement();
145
129
void XbelReader::readFolder(QTreeWidgetItem *item)
147
Q_ASSERT(isStartElement() && name() == "folder");
131
Q_ASSERT(xml.isStartElement() && xml.name() == "folder");
149
133
QTreeWidgetItem *folder = createChildItem(item);
150
bool folded = (attributes().value("folded") != "no");
134
bool folded = (xml.attributes().value("folded") != "no");
151
135
treeWidget->setItemExpanded(folder, !folded);
159
if (isStartElement()) {
160
if (name() == "title")
162
else if (name() == "folder")
164
else if (name() == "bookmark")
165
readBookmark(folder);
166
else if (name() == "separator")
167
readSeparator(folder);
169
readUnknownElement();
137
while (xml.readNextStartElement()) {
138
if (xml.name() == "title")
140
else if (xml.name() == "folder")
142
else if (xml.name() == "bookmark")
143
readBookmark(folder);
144
else if (xml.name() == "separator")
145
readSeparator(folder);
147
xml.skipCurrentElement();
174
151
void XbelReader::readBookmark(QTreeWidgetItem *item)
176
Q_ASSERT(isStartElement() && name() == "bookmark");
153
Q_ASSERT(xml.isStartElement() && xml.name() == "bookmark");
178
155
QTreeWidgetItem *bookmark = createChildItem(item);
179
156
bookmark->setFlags(bookmark->flags() | Qt::ItemIsEditable);
180
157
bookmark->setIcon(0, bookmarkIcon);
181
158
bookmark->setText(0, QObject::tr("Unknown title"));
182
bookmark->setText(1, attributes().value("href").toString());
189
if (isStartElement()) {
190
if (name() == "title")
193
readUnknownElement();
159
bookmark->setText(1, xml.attributes().value("href").toString());
161
while (xml.readNextStartElement()) {
162
if (xml.name() == "title")
165
xml.skipCurrentElement();
204
175
childItem = new QTreeWidgetItem(treeWidget);
206
childItem->setData(0, Qt::UserRole, name().toString());
177
childItem->setData(0, Qt::UserRole, xml.name().toString());
207
178
return childItem;
209
180
<p /><address><hr /><div align="center">
210
181
<table width="100%" cellspacing="0" border="0"><tr class="address">
211
<td width="30%" align="left">Copyright © 2009 Nokia Corporation and/or its subsidiary(-ies)</td>
212
<td width="40%" align="center"><a href="trademarks.html">Trademarks</a></td>
213
<td width="30%" align="right"><div align="right">Qt 4.5.2</div></td>
214
</tr></table></div></address></body>
182
<td width="40%" align="left">Copyright © 2009 Nokia Corporation and/or its subsidiary(-ies)</td>
183
<td width="20%" align="center"><a href="trademarks.html">Trademarks</a></td>
184
<td width="40%" align="right"><div align="right">Qt 4.6.0</div></td>
185
<script type="text/javascript" src="http://www.google.com/jsapi"></script><script type="text/javascript">google.load("elements", "1", {packages: "transliteration"});</script><script type="text/javascript" src="http://www.google.com/coop/cse/t13n?form=cse-search-box&t13n_langs=en"></script><script type="text/javascript" src="http://www.google.com/coop/cse/brand?form=cse-search-box&lang=en"></script></tr></table></div></address></body>