From e1af79a38c0207c5205e8d5b37c0fedc3f2cef9b Mon Sep 17 00:00:00 2001 From: Hannes Janetzek Date: Tue, 11 May 2010 01:52:20 +0000 Subject: [PATCH] change to new api SVN revision: 48746 --- src/e_mod_main.c | 112 ++++++++++++++++++++++++++--------------------- 1 file changed, 63 insertions(+), 49 deletions(-) diff --git a/src/e_mod_main.c b/src/e_mod_main.c index 72bacae..09881d0 100644 --- a/src/e_mod_main.c +++ b/src/e_mod_main.c @@ -2,12 +2,14 @@ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2 */ -#include +#include "e.h" +#include "e_mod_main.h" +#include "evry_api.h" +#include "json.h" + #include #include -#include "e_mod_main.h" -#include "json.h" #define ACT_GOOGLE 1 #define ACT_FEELING_LUCKY 2 @@ -123,6 +125,10 @@ struct _Json_Data int is_val; }; +static const Evry_API *evry = NULL; +static Evry_Module *evry_module = NULL; +static Eina_Bool active = EINA_FALSE; + static Module_Config *_conf; static char _config_path[] = "extensions/" PACKAGE; static char _config_domain[] = "module." PACKAGE; @@ -292,7 +298,7 @@ _icon_data_cb(Url_Data *dd) { fwrite(dd->data, dd->size, sizeof(char), f); fclose(f); - evry_event_item_changed(EVRY_ITEM(wl), 1, 0); + evry->event_item_changed(EVRY_ITEM(wl), 1, 0); } _url_data_free(dd); @@ -382,7 +388,7 @@ _web_link_icon_get(Evry_Item *it, Evas *e) if (!wl->thumb_file) { - char *sum = evry_util_md5_sum(wl->thumb); + char *sum = evry->util_md5_sum(wl->thumb); snprintf(thumb_buf, sizeof(thumb_buf), "%s/.cache/youtube/%s.jpeg", @@ -520,7 +526,7 @@ _cleanup(Evry_Plugin *plugin) p->timer = NULL; IF_RELEASE(p->input); - + EVRY_PLUGIN_ITEMS_FREE(p); } @@ -534,7 +540,7 @@ _send_request(void *data) if (!p->input) return 0; - query = evry_util_url_escape(p->input, 0); + query = evry->util_url_escape(p->input, 0); if (!strcmp(p->base.name, N_("Translate"))) snprintf(buf, sizeof(buf), p->request, _conf->translate, query); @@ -591,7 +597,7 @@ _action(Evry_Action *act) if (!app->desktop) app->file = "xdg-open"; - char *tmp = evry_util_url_escape(act->it1.item->label, 0); + char *tmp = evry->util_url_escape(act->it1.item->label, 0); if (EVRY_ITEM_DATA_INT_GET(act) == ACT_GOOGLE) { @@ -618,7 +624,7 @@ _action(Evry_Action *act) file->path = buf; - evry_util_exec_app(EVRY_ITEM(app), EVRY_ITEM(file)); + evry->util_exec_app(EVRY_ITEM(app), EVRY_ITEM(file)); if (app->desktop) { @@ -712,14 +718,14 @@ _youtube_dl_timer(void *d) f->mime = eina_stringshare_add("audio/"); if ((yd->method == YOUTUBE_DL_ENQ) && - (act = evry_action_find(N_("Enqueue in Playlist")))) + (act = evry->action_find(N_("Enqueue in Playlist")))) { act->it1.item = EVRY_ITEM(f); act->action(act); _send_notification(yd->id, "emblem-sound", N_("Enqueue"), yd->label, -1); } if ((yd->method == YOUTUBE_DL_PLAY) && - (act = evry_action_find(N_("Play File")))) + (act = evry->action_find(N_("Play File")))) { act->it1.item = EVRY_ITEM(f); act->action(act); @@ -1010,7 +1016,7 @@ _action_upload(Evry_Action *act) Upload_Data *ud; GET_FILE(file, act->it1.item); - if (!evry_file_path_get(file)) + if (!evry->file_path_get(file)) return 0; ud = E_NEW(Upload_Data, 1); @@ -1068,15 +1074,24 @@ _complete(Evry_Plugin *p, const Evry_Item *item, char **input) return EVRY_COMPLETE_INPUT; } -static Eina_Bool -_plugins_init(void) +static int +_plugins_init(const Evry_API *_api) { Evry_Plugin *p; Evry_Action *act; - if (!evry_api_version_check(EVRY_API_VERSION)) + if (active) + return EINA_TRUE; + + evry = _api; + + if (!evry->api_version_check(EVRY_API_VERSION)) return EINA_FALSE; + active = EINA_TRUE; + + WEBLINK = evry->type_register("WEBLINK"); + #define PLUGIN_NEW(_name, _type, _icon, _begin, _cleaup, _fetch, _complete, _request, _data_cb, _host, _trigger) { \ p = EVRY_PLUGIN_NEW(Plugin, _name, _icon, _type, _begin, _cleanup, _fetch, NULL); \ p->config_path = _config_path; \ @@ -1085,7 +1100,7 @@ _plugins_init(void) GET_PLUGIN(plug, p); \ plug->request = _request; \ plug->data_cb = _data_cb; \ - if (evry_plugin_register(p, EVRY_PLUGIN_SUBJECT, 10)) { \ + if (evry->plugin_register(p, EVRY_PLUGIN_SUBJECT, 10)) { \ Plugin_Config *pc = p->config; \ pc->view_mode = VIEW_MODE_LIST; \ pc->aggregate = EINA_FALSE; \ @@ -1120,7 +1135,7 @@ _plugins_init(void) act = EVRY_ACTION_NEW(_name, _type, 0, _icon, _action, _check); \ EVRY_ITEM_DATA_INT_SET(act, _method); \ EVRY_ITEM(act)->icon_get = &_icon_get; \ - evry_action_register(act, 1); \ + evry->action_register(act, 1); \ actions = eina_list_append(actions, act); \ ACTION_NEW(N_("Google for it"), EVRY_TYPE_TEXT, "google", @@ -1151,6 +1166,18 @@ _plugins_init(void) _action_upload, _action_upload_check, ACT_UPLOAD_IMGUR); act->remember_context = EINA_TRUE; + handlers = eina_list_append + (handlers, ecore_event_handler_add + (ECORE_CON_EVENT_URL_DATA, _common_data_cb, _conf)); + + handlers = eina_list_append + (handlers, ecore_event_handler_add + (ECORE_CON_EVENT_URL_PROGRESS, _common_progress_cb, _conf)); + + handlers = eina_list_append + (handlers, ecore_event_handler_add + (ECORE_CON_EVENT_URL_COMPLETE, _common_complete_cb, _conf)); + return EINA_TRUE; } @@ -1159,12 +1186,20 @@ _plugins_shutdown(void) { Evry_Plugin *p; Evry_Action *act; + Ecore_Event_Handler *h; + + if (!active) return; EINA_LIST_FREE(plugins, p) EVRY_PLUGIN_FREE(p); EINA_LIST_FREE(actions, act) - evry_action_free(act); + evry->action_free(act); + + EINA_LIST_FREE(handlers, h) + ecore_event_handler_del(h); + + active = EINA_FALSE; } /***************************************************************************/ @@ -1421,8 +1456,6 @@ e_modapi_init(E_Module *m) ecore_con_url_init(); _conf_init(m); - WEBLINK = evry_type_register("WEBLINK"); - snprintf(buf, sizeof(buf), "%s/.cache/youtube", e_user_homedir_get()); if (!ecore_file_exists(buf)) ecore_file_mkdir(buf); @@ -1430,23 +1463,13 @@ e_modapi_init(E_Module *m) if (!ecore_file_exists(buf)) ecore_file_mkdir(buf); - if (!_plugins_init()) - { - _conf_shutdown(); - return NULL; - } + if ((evry = e_datastore_get("everything_loaded"))) + _plugins_init(evry); - handlers = eina_list_append - (handlers, ecore_event_handler_add - (ECORE_CON_EVENT_URL_DATA, _common_data_cb, _conf)); - - handlers = eina_list_append - (handlers, ecore_event_handler_add - (ECORE_CON_EVENT_URL_PROGRESS, _common_progress_cb, _conf)); - - handlers = eina_list_append - (handlers, ecore_event_handler_add - (ECORE_CON_EVENT_URL_COMPLETE, _common_complete_cb, _conf)); + evry_module = E_NEW(Evry_Module, 1); + evry_module->init = &_plugins_init; + evry_module->shutdown = &_plugins_shutdown; + EVRY_MODULE_REGISTER(evry_module); e_module_delayed_set(m, 1); @@ -1456,25 +1479,16 @@ e_modapi_init(E_Module *m) EAPI int e_modapi_shutdown(E_Module *m) { - Ecore_Event_Handler *h; + EVRY_MODULE_UNREGISTER(evry_module); + E_FREE(evry_module); - if (e_datastore_get("everything_loaded")) - _plugins_shutdown(); - - EINA_LIST_FREE(handlers, h) - ecore_event_handler_del(h); + _plugins_shutdown(); _conf_shutdown(); e_notification_shutdown(); ecore_con_url_shutdown(); - /* EINA_LIST_FREE(download_handlers, dd) - * { - * if (dd->exe) ecore_exe_kill(dd->exe); - * E_FREE(dd->file); - * E_FREE(dd); - * } */ - + /* XXX free download handler */ return 1; }