summaryrefslogtreecommitdiff
path: root/riscos/url_suggest.c
diff options
context:
space:
mode:
authorSteve Fryatt <steve@stevefryatt.org.uk>2011-02-20 23:16:33 +0000
committerSteve Fryatt <steve@stevefryatt.org.uk>2011-02-20 23:16:33 +0000
commitcd9c0998e9849472473e577c4c04906e380896e1 (patch)
tree9bef19ebd3d56eccd03fa5613f1506c82762584b /riscos/url_suggest.c
parentf54fc080c2a96ffdb713a9c8b5d0ccb604197c07 (diff)
downloadnetsurf-cd9c0998e9849472473e577c4c04906e380896e1.tar.gz
netsurf-cd9c0998e9849472473e577c4c04906e380896e1.tar.bz2
Merge branches/stevef/toolbars to trunk.
svn path=/trunk/netsurf/; revision=11741
Diffstat (limited to 'riscos/url_suggest.c')
-rw-r--r--riscos/url_suggest.c71
1 files changed, 54 insertions, 17 deletions
diff --git a/riscos/url_suggest.c b/riscos/url_suggest.c
index 82ca5520c..be766e1bd 100644
--- a/riscos/url_suggest.c
+++ b/riscos/url_suggest.c
@@ -34,28 +34,29 @@ struct url_suggest_item {
struct url_suggest_item *next; /*< The next URL in the list. */
};
-static bool url_suggest_callback(const char *url, const struct url_data *data);
+static bool ro_gui_url_suggest_callback(const char *url,
+ const struct url_data *data);
-static wimp_menu *suggest_menu;
static int suggest_entries;
static time_t suggest_time;
static struct url_suggest_item *suggest_list;
+static wimp_MENU(URL_SUGGEST_MAX_URLS) url_suggest_menu_block;
+wimp_menu *ro_gui_url_suggest_menu = (wimp_menu *) &url_suggest_menu_block;
+
+
/**
- * Initialise the URL suggestion menu. A menu block which must be set to
- * contain URL_SUGGEST_MAX_URLS entries is passed in.
+ * Initialise the URL suggestion menu. This MUST be called before anything
+ * tries to use the URL menu.
*
- * /param *menu The menu to use as the suggestion menu.
* /return true if initialisation was OK; else false.
*/
-bool ro_gui_url_suggest_init(wimp_menu *menu)
+bool ro_gui_url_suggest_init(void)
{
- suggest_menu = menu;
-
- suggest_menu->title_data.indirected_text.text =
+ ro_gui_url_suggest_menu->title_data.indirected_text.text =
(char *) messages_get("URLSuggest");
- ro_gui_menu_init_structure((wimp_menu *) suggest_menu,
+ ro_gui_menu_init_structure((wimp_menu *) ro_gui_url_suggest_menu,
URL_SUGGEST_MAX_URLS);
suggest_entries = 0;
@@ -65,6 +66,21 @@ bool ro_gui_url_suggest_init(wimp_menu *menu)
/**
+ * Check if there is a URL suggestion menu available for use.
+ *
+ * \TODO -- Ideally this should be able to decide if there's a menu
+ * available without actually having to build it all.
+ *
+ * /return true if the menu has entries; else false.
+ */
+
+bool ro_gui_url_suggest_get_menu_available(void)
+{
+ return ro_gui_url_suggest_prepare_menu();
+}
+
+
+/**
* Builds the URL suggestion menu. This is called by ro_gui_menu_create() when
* it is asked to display the url_suggest_menu.
*
@@ -82,7 +98,7 @@ bool ro_gui_url_suggest_prepare_menu(void)
suggest_list = NULL;
suggest_time = time(NULL);
- urldb_iterate_entries(url_suggest_callback);
+ urldb_iterate_entries(ro_gui_url_suggest_callback);
/* If any menu entries were found, put them into the menu. The list
* is in reverse order, last to first, so the menu is filled backwards.
@@ -100,10 +116,12 @@ bool ro_gui_url_suggest_prepare_menu(void)
while (list != NULL && i > 0) {
i--;
- suggest_menu->entries[i].menu_flags = 0;
- suggest_menu->entries[i].data.indirected_text.text =
+ ro_gui_url_suggest_menu->entries[i].menu_flags = 0;
+ ro_gui_url_suggest_menu->
+ entries[i].data.indirected_text.text =
(char *) list->url;
- suggest_menu->entries[i].data.indirected_text.size =
+ ro_gui_url_suggest_menu->
+ entries[i].data.indirected_text.size =
strlen(list->url) + 1;
next = list->next;
@@ -113,9 +131,10 @@ bool ro_gui_url_suggest_prepare_menu(void)
assert(i == 0);
- suggest_menu->entries[0].menu_flags |=
+ ro_gui_url_suggest_menu->entries[0].menu_flags |=
wimp_MENU_TITLE_INDIRECTED;
- suggest_menu->entries[suggest_entries - 1].menu_flags |=
+ ro_gui_url_suggest_menu->
+ entries[suggest_entries - 1].menu_flags |=
wimp_MENU_LAST;
return true;
@@ -133,7 +152,7 @@ bool ro_gui_url_suggest_prepare_menu(void)
* \return true to continue iteration, false otherwise
*/
-bool url_suggest_callback(const char *url, const struct url_data *data)
+bool ro_gui_url_suggest_callback(const char *url, const struct url_data *data)
{
int count;
unsigned int weight;
@@ -193,3 +212,21 @@ bool url_suggest_callback(const char *url, const struct url_data *data)
return true;
}
+
+/**
+ * Process a selection from the URL Suggest menu.
+ *
+ * \param *selection The menu selection.
+ * \return Pointer to the URL that was selected, or NULL for none.
+ */
+
+const char *ro_gui_url_suggest_get_selection(wimp_selection *selection)
+{
+ const char *url = NULL;
+
+ if (selection->items[0] >= 0)
+ url = ro_gui_url_suggest_menu->entries[selection->items[0]].
+ data.indirected_text.text;
+
+ return url;
+}