aboutsummaryrefslogtreecommitdiff
path: root/lib/bookmarks/formats/ffjson.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lib/bookmarks/formats/ffjson.cpp')
-rw-r--r--lib/bookmarks/formats/ffjson.cpp18
1 files changed, 16 insertions, 2 deletions
diff --git a/lib/bookmarks/formats/ffjson.cpp b/lib/bookmarks/formats/ffjson.cpp
index f173904..98f8e60 100644
--- a/lib/bookmarks/formats/ffjson.cpp
+++ b/lib/bookmarks/formats/ffjson.cpp
@@ -12,6 +12,20 @@
#include <QJsonObject>
#include <QJsonArray>
#include <QDebug>
+#include <QDateTime>
+
+inline auto asDate(const QJsonValue &v)
+{
+ // timestamps in bookmarks.json are, for some reason, in *micro*seconds
+ return QDateTime::fromMSecsSinceEpoch(v.toVariant().toLongLong() / 1000);
+}
+
+inline void readElementData(const QJsonObject &object, BookmarkItem *item)
+{
+ item->setData(BookmarkItem::Title, object["title"].toString());
+ item->setData(BookmarkItem::DateAdded, asDate(object["dateAdded"]));
+ item->setData(BookmarkItem::LastModified, asDate(object["lastModified"]));
+}
void readChildElements(const QJsonObject &object, BookmarkItem *item)
{
@@ -22,13 +36,13 @@ void readChildElements(const QJsonObject &object, BookmarkItem *item)
if(type == "text/x-moz-place-container") {
auto *childItem = new BookmarkItem({}, BookmarkItem::Folder, item);
childItem->setExpanded(true);
- childItem->setData(BookmarkItem::Title, child["title"].toString());
+ readElementData(child, childItem);
item->appendChild(childItem);
readChildElements(child, childItem);
} else if(type == "text/x-moz-place") {
auto *childItem = new BookmarkItem({}, BookmarkItem::Bookmark, item);
- childItem->setData(BookmarkItem::Title, child["title"].toString());
+ readElementData(child, childItem);
childItem->setData(BookmarkItem::Href, child["uri"].toString());
item->appendChild(childItem);