diff options
author | Aqua-sama <aqua@iserlohn-fortress.net> | 2020-01-17 10:25:27 +0200 |
---|---|---|
committer | Aqua-sama <aqua@iserlohn-fortress.net> | 2020-01-17 11:18:34 +0200 |
commit | 5f708d4618d739d14442b85c466fdbac84a74cc8 (patch) | |
tree | e253289a1686f302df62d0f0865b9dcd6bfa6412 /lib/bookmarks/formats/ffjson.cpp | |
parent | Add Firefox bookmarks.json format to libbookmarks (diff) | |
download | smolbote-5f708d4618d739d14442b85c466fdbac84a74cc8.tar.xz |
BookmarkItem::DateAdded and LastModified fields
- add read support in FFJson for DateAdded and LastModified fields
- add read/write support in Xbel for DateAdded and LastModified fields
- BookmarkModel: set DateAdded on appendBookmark and appendFolder
- EditBookmarkDialog: set LastModified field when saving changes
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); |