28 auto treeNode = QmlStaticData::instance().getBookmarkTreeNode(item);
29 Q_EMIT created(treeNode);
33 auto treeNode = QmlStaticData::instance().getBookmarkTreeNode(item);
34 Q_EMIT changed(treeNode);
38 auto treeNode = QmlStaticData::instance().getBookmarkTreeNode(item);
39 Q_EMIT removed(treeNode);
45 auto bookmarks =
mApp->bookmarks();
46 QList<BookmarkItem*> items;
48 if (treeNode->
url().isEmpty()) {
49 if (treeNode->
item() == bookmarks->rootItem()) {
50 return bookmarks->rootItem();
52 }
else if (treeNode->
item() == bookmarks->toolbarFolder()) {
53 return bookmarks->toolbarFolder();
55 }
else if (treeNode->
item() == bookmarks->menuFolder()) {
56 return bookmarks->menuFolder();
58 }
else if (treeNode->
item() == bookmarks->unsortedFolder()) {
59 return bookmarks->unsortedFolder();
62 items = bookmarks->searchBookmarks(treeNode->
title());
64 items = bookmarks->searchBookmarks(QUrl::fromEncoded(treeNode->
url().toUtf8()));
68 if (treeNode->
item() == item) {
76BookmarkItem *QmlBookmarks::getBookmarkItem(QObject *
object)
const
78 auto treeNode = qobject_cast<QmlBookmarkTreeNode*>(
object);
83 auto item = getBookmarkItem(treeNode);
84 if (!item || item->urlString() != treeNode->
url()) {
93 return mApp->bookmarks()->isBookmarked(QUrl::fromEncoded(url.toUtf8()));
123 if (!map.contains(
QSL(
"parent"))) {
124 qWarning() <<
"Unable to create new bookmark:" <<
"parent not found";
127 const QString title = map.value(
QSL(
"title")).toString();
128 const QString urlString = map.value(
QSL(
"url")).toString();
129 const QString description = map.value(
QSL(
"description")).toString();
132 if (map.contains(
QSL(
"type"))) {
134 }
else if (urlString.isEmpty()){
135 if (!title.isEmpty()) {
144 auto object = map.value(
QSL(
"parent")).value<QObject*>();
145 auto parent = getBookmarkItem(
object);
147 qWarning() <<
"Unable to create new bookmark:" <<
"parent not found";
151 item->setTitle(title);
152 item->setUrl(QUrl::fromEncoded(urlString.toUtf8()));
153 item->setDescription(description);
154 mApp->bookmarks()->addBookmark(parent, item);
160 auto item = getBookmarkItem(treeNode);
162 qWarning() <<
"Unable to remove bookmark:" <<
"BookmarkItem not found";
165 return mApp->bookmarks()->removeBookmark(item);
170 if (!map.contains(
QSL(
"query")) && !map.contains(
QSL(
"url"))) {
171 qWarning() <<
"Unable to search bookmarks";
175 const QString query = map.value(
QSL(
"query")).toString();
176 const QString urlString = map.value(
QSL(
"url")).toString();
177 QList<BookmarkItem*> items;
178 if (urlString.isEmpty()) {
179 items =
mApp->bookmarks()->searchBookmarks(query);
181 items =
mApp->bookmarks()->searchBookmarks(QUrl::fromEncoded(urlString.toUtf8()));
184 ret.reserve(items.size());
185 for (
auto item : std::as_const(items)) {
193 auto treeNode = qobject_cast<QmlBookmarkTreeNode*>(
object);
195 qWarning() <<
"Unable to update bookmark:" <<
"unable to cast QVariant to QmlBookmarkTreeNode";
199 auto item = getBookmarkItem(treeNode);
201 qWarning() <<
"Unable to update bookmark:" <<
"bookmark not found";
205 if (!
mApp->bookmarks()->canBeModified(item)) {
206 qWarning() <<
"Unable to update bookmark:" <<
"bookmark can not be modified";
209 QString newTitle = treeNode->
title();
210 if (changes.contains(
QSL(
"title"))) {
211 newTitle = changes.value(
QSL(
"title")).toString();
214 if (changes.contains(
QSL(
"description"))) {
215 newDescription = changes.value(
QSL(
"description")).toString();
217 QString newKeyword = treeNode->
keyword();
218 if (changes.contains(
QSL(
"keyword"))) {
219 newKeyword = changes.value(
QSL(
"keyword")).toString();
222 item->setTitle(newTitle);
223 item->setDescription(newDescription);
224 item->setKeyword(newKeyword);
225 mApp->bookmarks()->changeBookmark(item);
231 const QList<BookmarkItem*> items =
mApp->bookmarks()->searchBookmarks(QUrl(
string));
233 if (item->urlString() ==
string) {
245 auto bookmarkItem = getBookmarkItem(
object);
247 qWarning() <<
"Unable to get children:" <<
"parent not found";
251 const QList<BookmarkItem*> items = bookmarkItem->children();
void bookmarkRemoved(BookmarkItem *item)
void bookmarkAdded(BookmarkItem *item)
void bookmarkChanged(BookmarkItem *item)
The class exposing the bookmark item to QML.
QString description
description of bookmark tree node.
QString title
title of bookmark tree node.
QString url
url of bookmark tree node.
QString keyword
keyword of bookmark tree node.
Q_INVOKABLE QmlBookmarkTreeNode * lastUsedFolder() const
Get the last used bookmarks folder.
Q_INVOKABLE bool create(const QVariantMap &map) const
Creates a bookmark item.
Q_INVOKABLE QList< QObject * > search(const QVariantMap &map) const
QmlBookmarks::search.
QmlBookmarks(QObject *parent=nullptr)
Q_INVOKABLE QmlBookmarkTreeNode * get(const QString &string) const
Get the first matched bookmark item.
Q_INVOKABLE QmlBookmarkTreeNode * menuFolder() const
Get the bookmarks menu folder.
Q_INVOKABLE bool remove(QmlBookmarkTreeNode *treeNode) const
Removes a bookmark item.
Q_INVOKABLE QmlBookmarkTreeNode * toolbarFolder() const
Get the bookmarks toolbar.
Q_INVOKABLE bool update(QObject *object, const QVariantMap &changes) const
Updates a bookmark item.
Q_INVOKABLE QmlBookmarkTreeNode * rootItem() const
Get the root bookmark item.
Q_INVOKABLE bool isBookmarked(const QString &url) const
Checks if the url is bookmarked.
Q_INVOKABLE QList< QObject * > getChildren(QObject *object) const
Get children of the bookmark item.
Q_INVOKABLE QmlBookmarkTreeNode * unsortedFolder() const
Get the unsorted bookmarks folder.
static QmlStaticData & instance()
QmlBookmarkTreeNode * getBookmarkTreeNode(BookmarkItem *item)