diff options
Diffstat (limited to 'lib/bookmarks/formats/ffjson.cpp')
-rw-r--r-- | lib/bookmarks/formats/ffjson.cpp | 18 |
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); |