aboutsummaryrefslogtreecommitdiff
path: root/lib/bookmarks/xbel.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lib/bookmarks/xbel.cpp')
-rw-r--r--lib/bookmarks/xbel.cpp104
1 files changed, 52 insertions, 52 deletions
diff --git a/lib/bookmarks/xbel.cpp b/lib/bookmarks/xbel.cpp
index 47d855b..0f84447 100644
--- a/lib/bookmarks/xbel.cpp
+++ b/lib/bookmarks/xbel.cpp
@@ -9,42 +9,28 @@
#include "xbel.h"
#include <QFile>
-Xbel::Xbel(QIODevice *file)
+XbelReader::XbelReader(QIODevice *file)
{
Q_CHECK_PTR(file);
m_file = file;
}
-bool Xbel::read(BookmarkItem *root)
-{
- QXmlStreamReader xmlReader(m_file);
-
- if(xmlReader.readNextStartElement()) {
- if(!(xmlReader.name() == "xbel" && xmlReader.attributes().value("version") == "1.0")) {
- return false;
- }
-
- readChildElements(xmlReader, root);
- }
-
- return true;
-}
-
-void Xbel::readChildElements(QXmlStreamReader &reader, BookmarkItem *parentItem)
+void readChildElements(QXmlStreamReader &reader, BookmarksView *widget, QTreeWidgetItem *parentItem = nullptr)
{
while(reader.readNextStartElement()) {
if(reader.name() == "title") {
- parentItem->title = reader.readElementText();
+ Q_CHECK_PTR(parentItem);
+ parentItem->setText(0, reader.readElementText());
} else if(reader.name() == "folder") {
- BookmarkItem *item = new BookmarkItem(BookmarkItem::Folder, parentItem);
- item->folded = reader.attributes().value("folded") == QLatin1String("yes");
- readChildElements(reader, item);
+ auto *item = widget->createFolder(parentItem);
+ widget->setItemExpanded(item, !(reader.attributes().value("folded") == QLatin1String("yes")));
+ readChildElements(reader, widget, item);
} else if(reader.name() == "bookmark") {
- BookmarkItem *item = new BookmarkItem(BookmarkItem::Bookmark, parentItem);
- item->href = reader.attributes().value("href").toString();
- readChildElements(reader, item);
+ auto *item = widget->createBookmark(parentItem);
+ item->setText(1, reader.attributes().value("href").toString());
+ readChildElements(reader, widget, item);
} else {
reader.skipCurrentElement();
@@ -52,50 +38,64 @@ void Xbel::readChildElements(QXmlStreamReader &reader, BookmarkItem *parentItem)
}
}
-bool Xbel::write(BookmarkItem *root)
+void XbelReader::read(BookmarksView *treeWidget)
{
- QXmlStreamWriter xmlWriter(m_file);
- xmlWriter.setAutoFormatting(true);
+ QXmlStreamReader qXmlStreamReader(m_file);
- xmlWriter.writeStartDocument();
- xmlWriter.writeDTD("<!DOCTYPE xbel>");
-
- xmlWriter.writeStartElement("xbel");
- xmlWriter.writeAttribute("version", "1.0");
-
- writeChildElements(xmlWriter, root);
-
- xmlWriter.writeEndDocument();
+ if(qXmlStreamReader.readNextStartElement()) {
+ if(!(qXmlStreamReader.name() == "xbel" && qXmlStreamReader.attributes().value("version") == "1.0")) {
+ return;
+ }
- return true;
+ readChildElements(qXmlStreamReader, treeWidget);
+ }
}
-void Xbel::writeChildElements(QXmlStreamWriter &writer, BookmarkItem *parentItem)
+XbelWriter::XbelWriter(QIODevice *file)
{
- switch(parentItem->type()) {
- case BookmarkItem::Root:
- for(int i = 0; i < parentItem->childCount(); ++i) {
- writeChildElements(writer, parentItem->child(i));
- }
- break;
+ Q_CHECK_PTR(file);
+ m_file = file;
+}
- case BookmarkItem::Folder:
+void writeChildElements(QXmlStreamWriter &writer, BookmarksView *treeWidget, QTreeWidgetItem *parentItem)
+{
+ switch(treeWidget->itemType(parentItem)) {
+ case BookmarksView::Folder:
writer.writeStartElement("folder");
- writer.writeAttribute("folded", parentItem->folded ? "yes" : "no");
- writer.writeTextElement("title", parentItem->title);
+ writer.writeAttribute("folded", !treeWidget->isItemExpanded(parentItem) ? "yes" : "no");
+ writer.writeTextElement("title", parentItem->text(0));
for(int i = 0; i < parentItem->childCount(); ++i) {
- writeChildElements(writer, parentItem->child(i));
+ writeChildElements(writer, treeWidget, parentItem->child(i));
}
writer.writeEndElement();
- break;
- case BookmarkItem::Bookmark:
+ break;
+ case BookmarksView::Bookmark:
writer.writeStartElement("bookmark");
- writer.writeAttribute("href", parentItem->href);
- writer.writeTextElement("title", parentItem->title);
+ writer.writeAttribute("href", parentItem->text(1));
+ writer.writeTextElement("title", parentItem->text(0));
writer.writeEndElement();
+
break;
}
}
+
+void XbelWriter::write(BookmarksView *treeWidget)
+{
+ QXmlStreamWriter xmlWriter(m_file);
+ xmlWriter.setAutoFormatting(true);
+
+ xmlWriter.writeStartDocument();
+ xmlWriter.writeDTD("<!DOCTYPE xbel>");
+
+ xmlWriter.writeStartElement("xbel");
+ xmlWriter.writeAttribute("version", "1.0");
+
+ for(int i = 0; i < treeWidget->topLevelItemCount(); ++i) {
+ writeChildElements(xmlWriter, treeWidget, treeWidget->topLevelItem(i));
+ }
+
+ xmlWriter.writeEndDocument();
+}