summaryrefslogtreecommitdiff
path: root/amiga/gui.c
diff options
context:
space:
mode:
Diffstat (limited to 'amiga/gui.c')
-rw-r--r--amiga/gui.c85
1 files changed, 49 insertions, 36 deletions
diff --git a/amiga/gui.c b/amiga/gui.c
index 11f38d498..079ce0aee 100644
--- a/amiga/gui.c
+++ b/amiga/gui.c
@@ -687,7 +687,7 @@ static nserror ami_set_options(struct nsoption_s *defaults)
(char *)strdup("PROGDIR:Resources/ca-bundle"));
- search_engines_file_location = nsoption_charp(search_engines_file);
+ search_web_init(nsoption_charp(search_engines_file));
sprintf(temp, "%s/FontGlyphCache", current_user_dir);
nsoption_setnull_charp(font_unicode_file,
@@ -1000,7 +1000,7 @@ static void gui_init2(int argc, char** argv)
ami_cookies_initialise();
ami_global_history_initialise();
- search_web_provider_details(nsoption_int(search_provider));
+ search_web_select_provider(nsoption_int(search_provider));
if (notalreadyrunning &&
(nsoption_bool(startup_no_window) == false))
@@ -1878,18 +1878,17 @@ void ami_handle_msg(void)
break;
case GID_URL:
+ {
+ nserror ret;
+ nsurl *url;
GetAttr(STRINGA_TextVal,
(Object *)gwin->objects[GID_URL],
(ULONG *)&storage);
- if(utf8 = ami_to_utf8_easy((const char *)storage)) {
- if(search_is_url((char *)utf8) == false)
- {
- utf8 = search_web_from_term(utf8);
- }
+ utf8 = ami_to_utf8_easy((const char *)storage);
- if (nsurl_create((char *)utf8, &url) != NSERROR_OK) {
- warn_user("NoMemory", 0);
- } else {
+ ret = search_web_omni(utf8, SEARCH_WEB_OMNI_NONE, &url);
+ ami_utf8_free(utf8);
+ if (ret == NSERROR_OK) {
browser_window_navigate(gwin->bw,
url,
NULL,
@@ -1898,29 +1897,32 @@ void ami_handle_msg(void)
NULL,
NULL);
nsurl_unref(url);
- }
- ami_utf8_free(utf8);
- } else {
- warn_user("NoMemory", 0);
}
+ if (ret != NSERROR_OK) {
+ warn_user(messages_get_errorcode(ret), 0);
+ }
+ }
break;
case GID_TOOLBARLAYOUT:
/* Need fixing: never gets here */
- search_web_retrieve_ico(false);
+ search_web_select_provider(-1);
break;
case GID_SEARCHSTRING:
+ {
+ nserror ret;
+ nsurl *url;
+
GetAttr(STRINGA_TextVal,
(Object *)gwin->objects[GID_SEARCHSTRING],
(ULONG *)&storage);
- if(utf8 = ami_to_utf8_easy((const char *)storage)) {
- storage = (ULONG)search_web_from_term(utf8);
- ami_utf8_free(utf8);
- if (nsurl_create((char *)storage, &url) != NSERROR_OK) {
- warn_user("NoMemory", 0);
- } else {
+ utf8 = ami_to_utf8_easy((const char *)storage);
+
+ ret = search_web_omni(utf8, SEARCH_WEB_OMNI_SEARCHONLY, &url);
+ ami_utf8_free(utf8);
+ if (ret == NSERROR_OK) {
browser_window_navigate(gwin->bw,
url,
NULL,
@@ -1928,11 +1930,13 @@ void ami_handle_msg(void)
NULL,
NULL,
NULL);
- nsurl_unref(url);
- }
- } else {
- warn_user("NoMemory", 0);
+ nsurl_unref(url);
+ }
+ if (ret != NSERROR_OK) {
+ warn_user(messages_get_errorcode(ret), 0);
}
+
+ }
break;
case GID_HOME:
@@ -3873,7 +3877,9 @@ gui_window_create(struct browser_window *bw,
glob = &browserglob;
if(locked_screen) UnlockPubScreen(NULL,scrn);
- search_web_retrieve_ico(false);
+
+ /* set web search provider */
+ search_web_select_provider(nsoption_int(search_provider));
ScreenToFront(scrn);
@@ -4772,12 +4778,14 @@ static uint32 ami_set_favicon_render_hook(struct Hook *hook, APTR space,
}
/**
- * set gui display of a retrieved favicon representing the search
- * provider
- * \param ico may be NULL for local calls; then access current cache from
- * search_web_ico()
+ * Gui callback when search provider details are updated.
+ *
+ * \param provider_name The providers name.
+ * \param ico_bitmap The icon bitmap representing the provider.
+ * \return NSERROR_OK on success else error code.
*/
-static void gui_set_search_ico(hlcache_handle *ico)
+nserror gui_search_web_provider_update(const char *provider_name,
+ struct bitmap *ico_bitmap)
{
struct BitMap *bm = NULL;
struct IBox *bbox;
@@ -4790,10 +4798,9 @@ static void gui_set_search_ico(hlcache_handle *ico)
if(IsMinListEmpty(window_list)) return;
if(nsoption_bool(kiosk_mode) == true) return;
- if (ico == NULL) ico = search_web_ico();
- ico_bitmap = content_get_bitmap(ico);
- if ((ico != NULL) && (ico_bitmap != NULL))
+ if (ico_bitmap != NULL) {
bm = ami_bitmap_get_native(ico_bitmap, 16, 16, NULL);
+ }
node = (struct nsObject *)GetHead((struct List *)window_list);
@@ -4807,7 +4814,7 @@ static void gui_set_search_ico(hlcache_handle *ico)
RefreshSetGadgetAttrs((struct Gadget *)gwin->objects[GID_SEARCH_ICON],
gwin->win, NULL,
- GA_HintInfo, search_web_provider_name(),
+ GA_HintInfo, provider_name,
TAG_DONE);
EraseRect(gwin->win->RPort, bbox->Left, bbox->Top,
@@ -4843,6 +4850,8 @@ static void gui_set_search_ico(hlcache_handle *ico)
}
}
} while(node = nnode);
+
+ return NSERROR_OK;
}
static uint32 ami_set_search_ico_render_hook(struct Hook *hook, APTR space,
@@ -5214,12 +5223,15 @@ static struct gui_fetch_table amiga_fetch_table = {
.get_resource_url = gui_get_resource_url,
};
+static struct gui_search_web_table amiga_search_web_table = {
+ .provider_update = gui_search_web_provider_update,
+};
+
static struct gui_browser_table amiga_browser_table = {
.poll = gui_poll,
.schedule = ami_schedule,
.quit = gui_quit,
- .set_search_ico = gui_set_search_ico,
.launch_url = gui_launch_url,
.create_form_select_menu = gui_create_form_select_menu,
.cert_verify = gui_cert_verify,
@@ -5247,6 +5259,7 @@ int main(int argc, char** argv)
.file = &amiga_file_table,
.utf8 = amiga_utf8_table,
.search = amiga_search_table,
+ .search_web = &amiga_search_web_table,
.llcache = filesystem_llcache_table,
};