diff --git a/src/modules/Makefile_packagekit.mk b/src/modules/Makefile_packagekit.mk index baab1bf31..a902b4faa 100644 --- a/src/modules/Makefile_packagekit.mk +++ b/src/modules/Makefile_packagekit.mk @@ -13,6 +13,8 @@ src_modules_packagekit_module_la_LDFLAGS = $(MOD_LDFLAGS) src_modules_packagekit_module_la_SOURCES = \ src/modules/packagekit/e_mod_main.c \ src/modules/packagekit/e_mod_main.h \ + src/modules/packagekit/e_mod_config.c \ + src/modules/packagekit/e_mod_config.h \ src/modules/packagekit/e_mod_packagekit.c \ src/modules/packagekit/e_mod_packagekit.h diff --git a/src/modules/packagekit/e_mod_config.c b/src/modules/packagekit/e_mod_config.c new file mode 100644 index 000000000..8e3c931e2 --- /dev/null +++ b/src/modules/packagekit/e_mod_config.c @@ -0,0 +1,124 @@ +#include "e_mod_config.h" +#include "e_mod_packagekit.h" + + +struct _E_Config_Dialog_Data +{ + int update_interval; + char *manager_command; + int show_description; +}; + +static void * +_cfg_data_create(E_Config_Dialog *cfd) +{ + E_PackageKit_Module_Context *ctxt = cfd->data; + + E_Config_Dialog_Data *cfdata = E_NEW(E_Config_Dialog_Data, 1); + cfdata->update_interval = ctxt->config->update_interval; + cfdata->show_description = ctxt->config->show_description; + if (ctxt->config->manager_command) + cfdata->manager_command = strdup(ctxt->config->manager_command); + else + cfdata->manager_command = strdup(""); + + return cfdata; +} + +static void +_cfg_data_free(E_Config_Dialog *cfd EINA_UNUSED, E_Config_Dialog_Data *cfdata) +{ + E_FREE(cfdata->manager_command); + E_FREE(cfdata); +} + +static Evas_Object * +_cfg_widgets_create(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata) +{ + Evas_Object *list, *of, *ob; + E_Radio_Group *rg; + + list = e_widget_list_add(evas, 0, 0); + + of = e_widget_framelist_add(evas, _("Refresh Packages"), 0); + rg = e_widget_radio_group_new(&(cfdata->update_interval)); + ob = e_widget_radio_add(evas, _("Never"), 0, rg); + e_widget_framelist_object_append(of, ob); + ob = e_widget_radio_add(evas, _("Hourly"), 60, rg); + e_widget_framelist_object_append(of, ob); + ob = e_widget_radio_add(evas, _("Daily"), 60 * 24, rg); + e_widget_framelist_object_append(of, ob); + ob = e_widget_radio_add(evas, _("Weekly"), 60 * 24 * 7, rg); + e_widget_framelist_object_append(of, ob); + e_widget_list_object_append(list, of, 1, 1, 0.5); + + of = e_widget_framelist_add(evas, _("Package list"), 0); + rg = e_widget_radio_group_new(&(cfdata->show_description)); + ob = e_widget_radio_add(evas, _("Show package name"), 0, rg); + e_widget_framelist_object_append(of, ob); + ob = e_widget_radio_add(evas, _("Show package description"), 1, rg); + e_widget_framelist_object_append(of, ob); + e_widget_list_object_append(list, of, 1, 0, 0.5); + + of = e_widget_framelist_add(evas, _("Package Manager"), 0); + ob = e_widget_entry_add(evas, &(cfdata->manager_command), NULL, NULL, NULL); + e_widget_framelist_object_append(of, ob); + e_widget_list_object_append(list, of, 1, 0, 0.5); + + e_dialog_resizable_set(cfd->dia, 1); + + return list; +} + +static int +_cfg_check_changed(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata) +{ + E_PackageKit_Module_Context *ctxt = cfd->data; + + if (ctxt->config->update_interval != cfdata->update_interval) + return 1; + + if (ctxt->config->show_description != cfdata->show_description) + return 1; + + if ((ctxt->config->manager_command) && (cfdata->manager_command) && + (strcmp(ctxt->config->manager_command, cfdata->manager_command))) + return 1; + + if ((!ctxt->config->manager_command) && (cfdata->manager_command[0])) + return 1; + + return 0; +} + +static int +_cfg_data_apply(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata) +{ + E_PackageKit_Module_Context *ctxt = cfd->data; + + ctxt->config->update_interval = cfdata->update_interval; + ctxt->config->show_description = cfdata->show_description; + + if (ctxt->config->manager_command) + eina_stringshare_replace(&ctxt->config->manager_command, cfdata->manager_command); + else + ctxt->config->manager_command = eina_stringshare_add(cfdata->manager_command); + + return 1; +} + +void +packagekit_config_show(E_PackageKit_Module_Context *ctxt) +{ + E_Config_Dialog_View *v; + + v = E_NEW(E_Config_Dialog_View, 1); + v->create_cfdata = _cfg_data_create; + v->free_cfdata = _cfg_data_free; + v->basic.create_widgets = _cfg_widgets_create; + v->basic.apply_cfdata = _cfg_data_apply; + v->basic.check_changed = _cfg_check_changed; + + e_config_dialog_new(e_util_comp_current_get(), _("System Updates Settings"), + "E", "_e_mod_packagekit_dialog", NULL, 0, v, ctxt); +} diff --git a/src/modules/packagekit/e_mod_config.h b/src/modules/packagekit/e_mod_config.h new file mode 100644 index 000000000..75faa137c --- /dev/null +++ b/src/modules/packagekit/e_mod_config.h @@ -0,0 +1,10 @@ +#ifndef PACKAGEKIT_CONFIG_H +#define PACKAGEKIT_CONFIG_H + +#include "e_mod_packagekit.h" + + +void packagekit_config_show(E_PackageKit_Module_Context *ctxt); + + +#endif diff --git a/src/modules/packagekit/e_mod_main.c b/src/modules/packagekit/e_mod_main.c index 10690ebc3..a3cf5b2a5 100644 --- a/src/modules/packagekit/e_mod_main.c +++ b/src/modules/packagekit/e_mod_main.c @@ -1,6 +1,7 @@ #include #include #include "e_mod_main.h" +#include "e_mod_config.h" #include "e_mod_packagekit.h" #define PACKAGEKIT_DOMAIN "module.packagekit" @@ -8,130 +9,14 @@ static E_Module *packagekit_mod = NULL; -/* Module Configuration */ -struct _E_Config_Dialog_Data -{ - int update_interval; - char *manager_command; - int show_description; -}; - -static void * -_cfg_data_create(E_Config_Dialog *cfd) -{ - E_PackageKit_Module_Context *ctxt = cfd->data; - - E_Config_Dialog_Data *cfdata = E_NEW(E_Config_Dialog_Data, 1); - cfdata->update_interval = ctxt->config->update_interval; - cfdata->show_description = ctxt->config->show_description; - if (ctxt->config->manager_command) - cfdata->manager_command = strdup(ctxt->config->manager_command); - else - cfdata->manager_command = strdup(""); - - return cfdata; -} - -static void -_cfg_data_free(E_Config_Dialog *cfd EINA_UNUSED, E_Config_Dialog_Data *cfdata) -{ - E_FREE(cfdata->manager_command); - E_FREE(cfdata); -} - -static Evas_Object * -_cfg_widgets_create(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata) -{ - Evas_Object *list, *of, *ob; - E_Radio_Group *rg; - - list = e_widget_list_add(evas, 0, 0); - - of = e_widget_framelist_add(evas, _("Refresh Packages"), 0); - rg = e_widget_radio_group_new(&(cfdata->update_interval)); - ob = e_widget_radio_add(evas, _("Never"), 0, rg); - e_widget_framelist_object_append(of, ob); - ob = e_widget_radio_add(evas, _("Hourly"), 60, rg); - e_widget_framelist_object_append(of, ob); - ob = e_widget_radio_add(evas, _("Daily"), 60 * 24, rg); - e_widget_framelist_object_append(of, ob); - ob = e_widget_radio_add(evas, _("Weekly"), 60 * 24 * 7, rg); - e_widget_framelist_object_append(of, ob); - e_widget_list_object_append(list, of, 1, 1, 0.5); - - of = e_widget_framelist_add(evas, _("Package list"), 0); - rg = e_widget_radio_group_new(&(cfdata->show_description)); - ob = e_widget_radio_add(evas, _("Show package name"), 0, rg); - e_widget_framelist_object_append(of, ob); - ob = e_widget_radio_add(evas, _("Show package description"), 1, rg); - e_widget_framelist_object_append(of, ob); - e_widget_list_object_append(list, of, 1, 0, 0.5); - - of = e_widget_framelist_add(evas, _("Package Manager"), 0); - ob = e_widget_entry_add(evas, &(cfdata->manager_command), NULL, NULL, NULL); - e_widget_framelist_object_append(of, ob); - e_widget_list_object_append(list, of, 1, 0, 0.5); - - e_dialog_resizable_set(cfd->dia, 1); - - return list; -} - -static int -_cfg_check_changed(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata) -{ - E_PackageKit_Module_Context *ctxt = cfd->data; - - if (ctxt->config->update_interval != cfdata->update_interval) - return 1; - - if (ctxt->config->show_description != cfdata->show_description) - return 1; - - if ((ctxt->config->manager_command) && (cfdata->manager_command) && - (strcmp(ctxt->config->manager_command, cfdata->manager_command))) - return 1; - - if ((!ctxt->config->manager_command) && (cfdata->manager_command[0])) - return 1; - - return 0; -} - -static int -_cfg_data_apply(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata) -{ - E_PackageKit_Module_Context *ctxt = cfd->data; - - ctxt->config->update_interval = cfdata->update_interval; - ctxt->config->show_description = cfdata->show_description; - - if (ctxt->config->manager_command) - eina_stringshare_replace(&ctxt->config->manager_command, cfdata->manager_command); - else - ctxt->config->manager_command = eina_stringshare_add(cfdata->manager_command); - - return 1; -} - static void _cfg_menu_cb(void *data, E_Menu *m EINA_UNUSED, E_Menu_Item *mi EINA_UNUSED) { - E_Config_Dialog_View *v; - - v = E_NEW(E_Config_Dialog_View, 1); - v->create_cfdata = _cfg_data_create; - v->free_cfdata = _cfg_data_free; - v->basic.create_widgets = _cfg_widgets_create; - v->basic.apply_cfdata = _cfg_data_apply; - v->basic.check_changed = _cfg_check_changed; - - e_config_dialog_new(e_util_comp_current_get(), _("System Updates Settings"), - "E", "_e_mod_packagekit_dialog", NULL, 0, v, data); + packagekit_config_show(data); } -void -packagekit_mouse_down_cb(void *data, Evas *evas EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event) +static void +_mouse_down_cb(void *data, Evas *evas EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event) { E_PackageKit_Instance *inst = data; E_PackageKit_Module_Context *ctxt = packagekit_mod->data; @@ -174,6 +59,24 @@ packagekit_mouse_down_cb(void *data, Evas *evas EINA_UNUSED, Evas_Object *obj EI } } +static Eina_Bool +_refresh_timer_cb(void *data) +{ + E_PackageKit_Module_Context *ctxt = data; + double elapsed; + + if (ctxt->config->update_interval == 0) + return ECORE_CALLBACK_RENEW; + + elapsed = (ecore_time_unix_get() - ctxt->config->last_update) / 60; + if (elapsed > ctxt->config->update_interval) + { + ctxt->config->last_update = ecore_time_unix_get(); + packagekit_create_transaction_and_exec(ctxt, packagekit_refresh_cache); + } + return ECORE_CALLBACK_RENEW; +} + /* Gadcon Api Functions */ static E_Gadcon_Client * @@ -190,7 +93,7 @@ _gc_init(E_Gadcon *gc, const char *name, const char *id, const char *style) inst->gcc = e_gadcon_client_new(gc, name, id, style, inst->gadget); inst->gcc->data = inst; evas_object_event_callback_add(inst->gadget, EVAS_CALLBACK_MOUSE_DOWN, - packagekit_mouse_down_cb, inst); + _mouse_down_cb, inst); ctxt->instances = eina_list_append(ctxt->instances, inst); packagekit_icon_update(ctxt, EINA_FALSE); return inst->gcc; @@ -258,24 +161,6 @@ static const E_Gadcon_Client_Class _gc_class = /* E Module Api Functions */ EAPI E_Module_Api e_modapi = { E_MODULE_API_VERSION, "PackageKit" }; -Eina_Bool -_timer_cb(void *data) -{ - E_PackageKit_Module_Context *ctxt = data; - double elapsed; - - if (ctxt->config->update_interval == 0) - return ECORE_CALLBACK_RENEW; - - elapsed = (ecore_time_unix_get() - ctxt->config->last_update) / 60; - if (elapsed > ctxt->config->update_interval) - { - ctxt->config->last_update = ecore_time_unix_get(); - packagekit_create_transaction_and_exec(ctxt, packagekit_refresh_cache); - } - return ECORE_CALLBACK_RENEW; -} - EAPI void * e_modapi_init(E_Module *m) { @@ -302,7 +187,7 @@ e_modapi_init(E_Module *m) packagekit_mod = m; e_gadcon_provider_register(&_gc_class); packagekit_dbus_connect(ctxt); - ctxt->refresh_timer = ecore_timer_add(60.0, _timer_cb, ctxt); + ctxt->refresh_timer = ecore_timer_add(60.0, _refresh_timer_cb, ctxt); return ctxt; } diff --git a/src/modules/packagekit/e_mod_packagekit.h b/src/modules/packagekit/e_mod_packagekit.h index fc6e71a8b..b6795b4c8 100644 --- a/src/modules/packagekit/e_mod_packagekit.h +++ b/src/modules/packagekit/e_mod_packagekit.h @@ -2,6 +2,7 @@ #define PACKAGEKIT_H #include +#include #define PKITV07 (ctxt->v_maj == 0) && (ctxt->v_min == 7)