diff options
author | Michael Drake <tlsa@netsurf-browser.org> | 2013-08-23 17:30:31 +0100 |
---|---|---|
committer | Michael Drake <tlsa@netsurf-browser.org> | 2013-08-23 17:30:31 +0100 |
commit | 184650c7d84cd403060ecfe3729cc7dbfa0e43c9 (patch) | |
tree | 6c7d9673c4874ac08b86640d3b79e3b0e7bdcd72 /desktop | |
parent | f0749394d12acc7e86a454db085b6b696ab9b7f9 (diff) | |
download | netsurf-184650c7d84cd403060ecfe3729cc7dbfa0e43c9.tar.gz netsurf-184650c7d84cd403060ecfe3729cc7dbfa0e43c9.tar.bz2 |
Add function to determine whether URL is in hotlist.
Diffstat (limited to 'desktop')
-rw-r--r-- | desktop/hotlist.c | 43 | ||||
-rw-r--r-- | desktop/hotlist.h | 8 |
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 |