aboutsummaryrefslogtreecommitdiff
path: root/lib/bookmarks/formats/xbel.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lib/bookmarks/formats/xbel.cpp')
-rw-r--r--lib/bookmarks/formats/xbel.cpp26
1 files changed, 23 insertions, 3 deletions
diff --git a/lib/bookmarks/formats/xbel.cpp b/lib/bookmarks/formats/xbel.cpp
index 1cb5756..bac2bc8 100644
--- a/lib/bookmarks/formats/xbel.cpp
+++ b/lib/bookmarks/formats/xbel.cpp
@@ -7,9 +7,10 @@
*/
#include "xbel.h"
-#include "model/bookmarkitem.h"
+#include "bookmarkitem.h"
#include <QXmlStreamReader>
#include <QXmlStreamWriter>
+#include <QDateTime>
inline void readChildElements(QXmlStreamReader &reader, BookmarkItem *parent)
{
@@ -17,6 +18,12 @@ inline void readChildElements(QXmlStreamReader &reader, BookmarkItem *parent)
if(reader.name() == "title") {
parent->setData(BookmarkItem::Title, reader.readElementText());
+ } else if(reader.name() == "dateAdded") {
+ parent->setData(BookmarkItem::DateAdded, QDateTime::fromString(reader.readElementText(), Qt::RFC2822Date));
+
+ } else if(reader.name() == "lastModified") {
+ parent->setData(BookmarkItem::LastModified, QDateTime::fromString(reader.readElementText(), Qt::RFC2822Date));
+
} else if(reader.name() == "tags") {
parent->setData(BookmarkItem::Tags, reader.readElementText().split(";"));
@@ -54,6 +61,19 @@ void Xbel::read(QIODevice *device, BookmarkItem *item)
}
}
+inline void writeCommon(QXmlStreamWriter &writer, const BookmarkItem *item)
+{
+ writer.writeTextElement("title", item->data(BookmarkItem::Title).toString());
+
+ const auto dateAdded = item->data(BookmarkItem::DateAdded);
+ if(!dateAdded.isNull())
+ writer.writeTextElement("dateAdded", dateAdded.toDateTime().toString(Qt::RFC2822Date));
+
+ const auto lastModified = item->data(BookmarkItem::LastModified);
+ if(!lastModified.isNull())
+ writer.writeTextElement("lastModified", lastModified.toDateTime().toString(Qt::RFC2822Date));
+}
+
inline void writeChildElements(QXmlStreamWriter &writer, const BookmarkItem *item)
{
switch(item->type()) {
@@ -66,7 +86,7 @@ inline void writeChildElements(QXmlStreamWriter &writer, const BookmarkItem *ite
case BookmarkItem::Folder:
writer.writeStartElement("folder");
writer.writeAttribute("folded", !item->isExpanded() ? "yes" : "no");
- writer.writeTextElement("title", item->data(BookmarkItem::Title).toString());
+ writeCommon(writer, item);
if(!item->data(BookmarkItem::Tags).isNull())
writer.writeTextElement("tags", item->data(BookmarkItem::Tags).toStringList().join(";"));
if(!item->data(BookmarkItem::Description).isNull())
@@ -82,7 +102,7 @@ inline void writeChildElements(QXmlStreamWriter &writer, const BookmarkItem *ite
case BookmarkItem::Bookmark:
writer.writeStartElement("bookmark");
writer.writeAttribute("href", item->data(BookmarkItem::Href).toString());
- writer.writeTextElement("title", item->data(BookmarkItem::Title).toString());
+ writeCommon(writer, item);
if(!item->data(BookmarkItem::Tags).isNull())
writer.writeTextElement("tags", item->data(BookmarkItem::Tags).toStringList().join(";"));
if(!item->data(BookmarkItem::Description).isNull())