/* * This file is part of smolbote. It's copyrighted by the contributors recorded * in the version control history of the file, available from its original * location: https://neueland.iserlohn-fortress.net/gitea/aqua/smolbote * * SPDX-License-Identifier: GPL-3.0 */ #include "ffjson.h" #include "bookmarkitem.h" #include #include #include #include void readChildElements(const QJsonObject &object, BookmarkItem *item) { for(const auto c : object["children"].toArray()) { const auto child = c.toObject(); const auto type = child["type"].toString(); if(type == "text/x-moz-place-container") { auto *childItem = new BookmarkItem({}, BookmarkItem::Folder, item); childItem->setExpanded(true); childItem->setData(BookmarkItem::Title, child["title"].toString()); 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()); childItem->setData(BookmarkItem::Href, child["uri"].toString()); item->appendChild(childItem); } else { qDebug() << "!!! unknown type " << qUtf8Printable(type); } } } void FFJson::read(QIODevice *device, BookmarkItem *item) { const auto doc = QJsonDocument::fromJson(device->readAll()); readChildElements(doc.object(), item); }