summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Drake <tlsa@netsurf-browser.org>2013-08-23 17:30:31 +0100
committerMichael Drake <tlsa@netsurf-browser.org>2013-08-23 17:30:31 +0100
commit184650c7d84cd403060ecfe3729cc7dbfa0e43c9 (patch)
tree6c7d9673c4874ac08b86640d3b79e3b0e7bdcd72
parentf0749394d12acc7e86a454db085b6b696ab9b7f9 (diff)
downloadnetsurf-184650c7d84cd403060ecfe3729cc7dbfa0e43c9.tar.gz
netsurf-184650c7d84cd403060ecfe3729cc7dbfa0e43c9.tar.bz2
Add function to determine whether URL is in hotlist.
-rw-r--r--desktop/hotlist.c43
-rw-r--r--desktop/hotlist.h8
2 files changed, 51 insertions, 0 deletions
diff --git a/desktop/hotlist.c b/desktop/hotlist.c
index dd21011a9..46f33d42c 100644
--- a/desktop/hotlist.c
+++ b/desktop/hotlist.c
@@ -1082,6 +1082,49 @@ nserror hotlist_add(nsurl *url)
}
+struct treeview_has_url_walk_ctx {
+ nsurl *url;
+ bool found;
+};
+/** Callback for treeview_walk */
+static nserror hotlist_has_url_walk_cb(void *ctx, void *node_data,
+ enum treeview_node_type type, bool *abort)
+{
+ struct treeview_has_url_walk_ctx *tw = ctx;
+
+ if (type == TREE_NODE_ENTRY) {
+ struct hotlist_entry *e = node_data;
+
+ if (nsurl_compare(e->url, tw->url, NSURL_COMPLETE) == true) {
+ /* Found what we're looking for */
+ tw->found = true;
+ *abort = true;
+ }
+ }
+
+ return NSERROR_OK;
+}
+/* Exported interface, documented in hotlist.h */
+bool hotlist_has_url(nsurl *url)
+{
+ nserror err;
+ struct treeview_has_url_walk_ctx tw = {
+ .url = url,
+ .found = false
+ };
+
+ if (hl_ctx.built == false)
+ return false;
+
+ err = treeview_walk(hl_ctx.tree, NULL, hotlist_has_url_walk_cb, NULL,
+ &tw, TREE_NODE_ENTRY);
+ if (err != NSERROR_OK)
+ return false;
+
+ return tw.found;
+}
+
+
/* Exported interface, documented in hotlist.h */
void hotlist_redraw(int x, int y, struct rect *clip,
const struct redraw_context *ctx)
diff --git a/desktop/hotlist.h b/desktop/hotlist.h
index 1fc37eada..1271b623e 100644
--- a/desktop/hotlist.h
+++ b/desktop/hotlist.h
@@ -62,6 +62,14 @@ nserror hotlist_fini(const char *path);
nserror hotlist_add(nsurl *url);
/**
+ * Check whether given URL is present in hotlist
+ *
+ * \param url Address to look for in hotlist
+ * \return true iff url is present in hotlist, false otherwise
+ */
+bool hotlist_has_url(nsurl *url);
+
+/**
* Redraw the hotlist.
*
* \param x X coordinate to render treeview at