diff options
Diffstat (limited to 'examples/corelib/serialization/streambookmarks/xbelreader.cpp')
-rw-r--r-- | examples/corelib/serialization/streambookmarks/xbelreader.cpp | 114 |
1 files changed, 57 insertions, 57 deletions
diff --git a/examples/corelib/serialization/streambookmarks/xbelreader.cpp b/examples/corelib/serialization/streambookmarks/xbelreader.cpp index 74e25f12a8..c622cf6642 100644 --- a/examples/corelib/serialization/streambookmarks/xbelreader.cpp +++ b/examples/corelib/serialization/streambookmarks/xbelreader.cpp @@ -1,20 +1,21 @@ // Copyright (C) 2016 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause -#include <QtWidgets> - #include "xbelreader.h" +#include <QStyle> +#include <QTreeWidget> + +using namespace Qt::StringLiterals; + //! [0] -XbelReader::XbelReader(QTreeWidget *treeWidget) - : treeWidget(treeWidget) +XbelReader::XbelReader(QTreeWidget *treeWidget) : treeWidget(treeWidget) { QStyle *style = treeWidget->style(); - folderIcon.addPixmap(style->standardPixmap(QStyle::SP_DirClosedIcon), - QIcon::Normal, QIcon::Off); - folderIcon.addPixmap(style->standardPixmap(QStyle::SP_DirOpenIcon), - QIcon::Normal, QIcon::On); + folderIcon.addPixmap(style->standardPixmap(QStyle::SP_DirClosedIcon), QIcon::Normal, + QIcon::Off); + folderIcon.addPixmap(style->standardPixmap(QStyle::SP_DirOpenIcon), QIcon::Normal, QIcon::On); bookmarkIcon.addPixmap(style->standardPixmap(QStyle::SP_FileIcon)); } //! [0] @@ -25,12 +26,10 @@ bool XbelReader::read(QIODevice *device) xml.setDevice(device); if (xml.readNextStartElement()) { - if (xml.name() == QLatin1String("xbel") - && xml.attributes().value(versionAttribute()) == QLatin1String("1.0")) { + if (xml.name() == "xbel"_L1 && xml.attributes().value("version"_L1) == "1.0"_L1) readXBEL(); - } else { + else xml.raiseError(QObject::tr("The file is not an XBEL version 1.0 file.")); - } } return !xml.error(); @@ -50,15 +49,15 @@ QString XbelReader::errorString() const //! [3] void XbelReader::readXBEL() { - Q_ASSERT(xml.isStartElement() && xml.name() == QLatin1String("xbel")); + Q_ASSERT(xml.isStartElement() && xml.name() == "xbel"_L1); while (xml.readNextStartElement()) { - if (xml.name() == QLatin1String("folder")) - readFolder(0); - else if (xml.name() == QLatin1String("bookmark")) - readBookmark(0); - else if (xml.name() == QLatin1String("separator")) - readSeparator(0); + if (xml.name() == "folder"_L1) + readFolder(nullptr); + else if (xml.name() == "bookmark"_L1) + readBookmark(nullptr); + else if (xml.name() == "separator"_L1) + readSeparator(nullptr); else xml.skipCurrentElement(); } @@ -66,75 +65,76 @@ void XbelReader::readXBEL() //! [3] //! [4] -void XbelReader::readTitle(QTreeWidgetItem *item) +void XbelReader::readBookmark(QTreeWidgetItem *item) { - Q_ASSERT(xml.isStartElement() && xml.name() == QLatin1String("title")); + Q_ASSERT(xml.isStartElement() && xml.name() == "bookmark"_L1); - QString title = xml.readElementText(); - item->setText(0, title); + QTreeWidgetItem *bookmark = createChildItem(item); + bookmark->setFlags(bookmark->flags() | Qt::ItemIsEditable); + bookmark->setIcon(0, bookmarkIcon); + bookmark->setText(0, QObject::tr("Unknown title")); + bookmark->setText(1, xml.attributes().value("href"_L1).toString()); + + while (xml.readNextStartElement()) { + if (xml.name() == "title"_L1) + readTitle(bookmark); + else + xml.skipCurrentElement(); + } } //! [4] //! [5] +void XbelReader::readTitle(QTreeWidgetItem *item) +{ + Q_ASSERT(xml.isStartElement() && xml.name() == "title"_L1); + item->setText(0, xml.readElementText()); +} +//! [5] + +//! [6] void XbelReader::readSeparator(QTreeWidgetItem *item) { - Q_ASSERT(xml.isStartElement() && xml.name() == QLatin1String("separator")); + Q_ASSERT(xml.isStartElement() && xml.name() == "separator"_L1); + constexpr char16_t midDot = u'\xB7'; + static const QString dots(30, midDot); QTreeWidgetItem *separator = createChildItem(item); - separator->setFlags(item->flags() & ~Qt::ItemIsSelectable); - separator->setText(0, QString(30, u'\xB7')); + separator->setFlags(item ? item->flags() & ~Qt::ItemIsSelectable : Qt::ItemFlags{}); + separator->setText(0, dots); xml.skipCurrentElement(); } -//! [5] +//! [6] +//! [7] void XbelReader::readFolder(QTreeWidgetItem *item) { - Q_ASSERT(xml.isStartElement() && xml.name() == QLatin1String("folder")); + Q_ASSERT(xml.isStartElement() && xml.name() == "folder"_L1); QTreeWidgetItem *folder = createChildItem(item); - bool folded = (xml.attributes().value(foldedAttribute()) != QLatin1String("no")); + bool folded = xml.attributes().value("folded"_L1) != "no"_L1; folder->setExpanded(!folded); while (xml.readNextStartElement()) { - if (xml.name() == QLatin1String("title")) + if (xml.name() == "title"_L1) readTitle(folder); - else if (xml.name() == QLatin1String("folder")) + else if (xml.name() == "folder"_L1) readFolder(folder); - else if (xml.name() == QLatin1String("bookmark")) + else if (xml.name() == "bookmark"_L1) readBookmark(folder); - else if (xml.name() == QLatin1String("separator")) + else if (xml.name() == "separator"_L1) readSeparator(folder); else xml.skipCurrentElement(); } } +//! [7] -void XbelReader::readBookmark(QTreeWidgetItem *item) -{ - Q_ASSERT(xml.isStartElement() && xml.name() == QLatin1String("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, xml.attributes().value(hrefAttribute()).toString()); - - while (xml.readNextStartElement()) { - if (xml.name() == QLatin1String("title")) - readTitle(bookmark); - else - xml.skipCurrentElement(); - } -} - +//! [8] QTreeWidgetItem *XbelReader::createChildItem(QTreeWidgetItem *item) { - QTreeWidgetItem *childItem; - if (item) { - childItem = new QTreeWidgetItem(item); - } else { - childItem = new QTreeWidgetItem(treeWidget); - } + QTreeWidgetItem *childItem = item ? new QTreeWidgetItem(item) : new QTreeWidgetItem(treeWidget); childItem->setData(0, Qt::UserRole, xml.name().toString()); return childItem; } +//! [8] |