From: Enlightenment S. <no-...@en...> - 2010-05-09 05:39:02
|
Log: replace messages properly copied string format function from elementary fix indetation Author: jeffdameth Date: 2010-05-08 22:38:55 -0700 (Sat, 08 May 2010) New Revision: 48706 Modified: trunk/E-MODULES-EXTRA/notification/src/e_mod_main.c trunk/E-MODULES-EXTRA/notification/src/e_mod_main.h trunk/E-MODULES-EXTRA/notification/src/e_mod_popup.c trunk/E-MODULES-EXTRA/notification/src/e_mod_popup.h Modified: trunk/E-MODULES-EXTRA/notification/src/e_mod_main.c =================================================================== --- trunk/E-MODULES-EXTRA/notification/src/e_mod_main.c 2010-05-09 05:15:55 UTC (rev 48705) +++ trunk/E-MODULES-EXTRA/notification/src/e_mod_main.c 2010-05-09 05:38:55 UTC (rev 48706) @@ -31,14 +31,14 @@ /* Gadcon Api Functions */ const E_Gadcon_Client_Class _gc_class = -{ - GADCON_CLIENT_CLASS_VERSION, "notification", - { + { + GADCON_CLIENT_CLASS_VERSION, "notification", + { _gc_init, _gc_shutdown, _gc_orient, _gc_label, _gc_icon, _gc_id_new, _gc_id_del, e_gadcon_site_is_not_toolbar - }, - E_GADCON_CLIENT_STYLE_PLAIN -}; + }, + E_GADCON_CLIENT_STYLE_PLAIN + }; static E_Gadcon_Client * _gc_init(E_Gadcon *gc, const char *name, const char *id, const char *style) @@ -61,9 +61,9 @@ inst->gcc = gcc; evas_object_event_callback_add(b->o_box, EVAS_CALLBACK_MOVE, - notification_box_cb_obj_moveresize, inst); + notification_box_cb_obj_moveresize, inst); evas_object_event_callback_add(b->o_box, EVAS_CALLBACK_RESIZE, - notification_box_cb_obj_moveresize, inst); + notification_box_cb_obj_moveresize, inst); notification_cfg->instances = eina_list_append(notification_cfg->instances, inst); _gc_orient(gcc, gc->orient); return gcc; @@ -96,9 +96,9 @@ case E_GADCON_ORIENT_CORNER_TR: case E_GADCON_ORIENT_CORNER_BL: case E_GADCON_ORIENT_CORNER_BR: - notification_box_orient_set(inst->n_box, 1); - e_gadcon_client_aspect_set(gcc, MAX(eina_list_count(inst->n_box->icons), 1) * 16, 16); - break; + notification_box_orient_set(inst->n_box, 1); + e_gadcon_client_aspect_set(gcc, MAX(eina_list_count(inst->n_box->icons), 1) * 16, 16); + break; case E_GADCON_ORIENT_VERT: case E_GADCON_ORIENT_LEFT: case E_GADCON_ORIENT_RIGHT: @@ -106,11 +106,11 @@ case E_GADCON_ORIENT_CORNER_RT: case E_GADCON_ORIENT_CORNER_LB: case E_GADCON_ORIENT_CORNER_RB: - notification_box_orient_set(inst->n_box, 0); - e_gadcon_client_aspect_set(gcc, 16, MAX(eina_list_count(inst->n_box->icons), 1) * 16); - break; + notification_box_orient_set(inst->n_box, 0); + e_gadcon_client_aspect_set(gcc, 16, MAX(eina_list_count(inst->n_box->icons), 1) * 16); + break; default: - break; + break; } e_gadcon_client_min_size_set(gcc, 16, 16); } @@ -131,7 +131,7 @@ snprintf(buf, sizeof(buf), "%s/e-module-notification.edj", e_module_dir_get(notification_mod)); if (!e_theme_edje_object_set(o, "base/theme/modules/notification", - "icon")) + "icon")) edje_object_file_set(o, buf, "icon"); return o; } @@ -156,7 +156,7 @@ { if (ci->id) eina_stringshare_del(ci->id); notification_cfg->items = eina_list_remove(notification_cfg->items, ci); - free(ci); + free(ci); } } @@ -168,16 +168,23 @@ unsigned int new_id; int stacked, popuped; - new_id = notification_cfg->next_id++; - e_notification_id_set(n, new_id); - + if (!replaces_id) + { + new_id = notification_cfg->next_id++; + e_notification_id_set(n, new_id); + } + else + { + e_notification_id_set(n, replaces_id); + } + popuped = notification_popup_notify(n, replaces_id, new_id, appname); stacked = notification_box_notify(n, replaces_id, new_id); if (!popuped && !stacked) { - e_notification_hint_urgency_set(n, 4); - notification_popup_notify(n, replaces_id, new_id, appname); + e_notification_hint_urgency_set(n, 4); + notification_popup_notify(n, replaces_id, new_id, appname); } return new_id; @@ -292,15 +299,15 @@ snprintf(buf, sizeof(buf), "%s/e-module-notification.edj", m->dir); /* register config panel entry */ e_configure_registry_category_add("extensions", 90, D_("Extensions"), NULL, - "preferences-extensions"); + "preferences-extensions"); e_configure_registry_item_add("extensions/notification", 30, D_("Notification"), NULL, - buf, e_int_config_notification_module); + buf, e_int_config_notification_module); conf_item_edd = E_CONFIG_DD_NEW("Notification_Config_Item", Config_Item); - #undef T - #undef D - #define T Config_Item - #define D conf_item_edd +#undef T +#undef D +#define T Config_Item +#define D conf_item_edd E_CONFIG_VAL(D, T, id, STR); E_CONFIG_VAL(D, T, show_label, INT); E_CONFIG_VAL(D, T, show_popup, INT); @@ -310,10 +317,10 @@ E_CONFIG_VAL(D, T, store_critical, INT); conf_edd = E_CONFIG_DD_NEW("Notification_Config", Config); - #undef T - #undef D - #define T Config - #define D conf_edd +#undef T +#undef D +#define T Config +#define D conf_edd E_CONFIG_VAL(D, T, version, INT); E_CONFIG_VAL(D, T, show_low, INT); E_CONFIG_VAL(D, T, show_normal, INT); @@ -328,57 +335,57 @@ notification_cfg = e_config_domain_load("module.notification", conf_edd); if (notification_cfg) { - if (notification_cfg->version == 0) - { - _notification_cfg_free(notification_cfg); - notification_cfg = NULL; - } - if ((notification_cfg->version >> 16) < MOD_CFG_FILE_EPOCH) - { - _notification_cfg_free(notification_cfg); - notification_cfg = NULL; + if (notification_cfg->version == 0) + { + _notification_cfg_free(notification_cfg); + notification_cfg = NULL; + } + if ((notification_cfg->version >> 16) < MOD_CFG_FILE_EPOCH) + { + _notification_cfg_free(notification_cfg); + notification_cfg = NULL; e_util_dialog_show(D_("Notification Configuration Updated"), - D_("Notification Module Configuration data needed " - "upgrading. Your old configuration<br> has been" - " wiped and a new set of defaults initialized. " - "This<br>will happen regularly during " - "development, so don't report a<br>bug. " - "This simply means the Notification module needs " - "new configuration<br>data by default for " - "usable functionality that your old<br>" - "configuration simply lacks. This new set of " - "defaults will fix<br>that by adding it in. " - "You can re-configure things now to your<br>" - "liking. Sorry for the inconvenience.<br>")); - } - else if (notification_cfg->version > MOD_CFG_FILE_VERSION) - { - _notification_cfg_free(notification_cfg); - notification_cfg = NULL; + D_("Notification Module Configuration data needed " + "upgrading. Your old configuration<br> has been" + " wiped and a new set of defaults initialized. " + "This<br>will happen regularly during " + "development, so don't report a<br>bug. " + "This simply means the Notification module needs " + "new configuration<br>data by default for " + "usable functionality that your old<br>" + "configuration simply lacks. This new set of " + "defaults will fix<br>that by adding it in. " + "You can re-configure things now to your<br>" + "liking. Sorry for the inconvenience.<br>")); + } + else if (notification_cfg->version > MOD_CFG_FILE_VERSION) + { + _notification_cfg_free(notification_cfg); + notification_cfg = NULL; e_util_dialog_show(D_("Notification Configuration Updated"), - D_("Your Notification Module Configuration is NEWER " - "than the Notification Module version. This is " - "very<br>strange. This should not happen unless" - " you downgraded<br>the Notification Module or " - "copied the configuration from a place where" - "<br>a newer version of the Notification Module " - "was running. This is bad and<br>as a " - "precaution your configuration has been now " - "restored to<br>defaults. Sorry for the " - "inconvenience.<br>")); - } + D_("Your Notification Module Configuration is NEWER " + "than the Notification Module version. This is " + "very<br>strange. This should not happen unless" + " you downgraded<br>the Notification Module or " + "copied the configuration from a place where" + "<br>a newer version of the Notification Module " + "was running. This is bad and<br>as a " + "precaution your configuration has been now " + "restored to<br>defaults. Sorry for the " + "inconvenience.<br>")); + } } if (!notification_cfg) { - notification_cfg = _notification_cfg_new(); + notification_cfg = _notification_cfg_new(); } else if (eina_list_count(notification_cfg->items) > 0) { - Config_Item *ci; - const char *p; + Config_Item *ci; + const char *p; - /* Init uuid */ + /* Init uuid */ ci = eina_list_last(notification_cfg->items)->data; p = strrchr(ci->id, '.'); if (p) uuid = atoi(p + 1); @@ -430,9 +437,9 @@ while (notification_cfg->handlers) { - ecore_event_handler_del(notification_cfg->handlers->data); - notification_cfg->handlers = eina_list_remove_list(notification_cfg->handlers, - notification_cfg->handlers); + ecore_event_handler_del(notification_cfg->handlers->data); + notification_cfg->handlers = eina_list_remove_list(notification_cfg->handlers, + notification_cfg->handlers); } if (notification_cfg->cfd) e_object_del(E_OBJECT(notification_cfg->cfd)); @@ -441,20 +448,20 @@ if (notification_cfg->menu) { - e_menu_post_deactivate_callback_set(notification_cfg->menu, NULL, NULL); - e_object_del(E_OBJECT(notification_cfg->menu)); - notification_cfg->menu = NULL; + e_menu_post_deactivate_callback_set(notification_cfg->menu, NULL, NULL); + e_object_del(E_OBJECT(notification_cfg->menu)); + notification_cfg->menu = NULL; } while (notification_cfg->items) { - Config_Item *ci; + Config_Item *ci; - ci = notification_cfg->items->data; - notification_cfg->items = eina_list_remove_list(notification_cfg->items, - notification_cfg->items); - if (ci->id) eina_stringshare_del(ci->id); - free(ci); + ci = notification_cfg->items->data; + notification_cfg->items = eina_list_remove_list(notification_cfg->items, + notification_cfg->items); + if (ci->id) eina_stringshare_del(ci->id); + free(ci); } notification_box_shutdown(); @@ -495,25 +502,25 @@ static Config * _notification_cfg_new(void) { - Config *cfg; + Config *cfg; - cfg = E_NEW(Config, 1); - cfg->cfd = NULL; - cfg->version = MOD_CFG_FILE_VERSION; - cfg->show_low = 0; - cfg->show_normal = 1; - cfg->show_critical = 1; - cfg->timeout = 5.0; - cfg->direction = DIRECTION_DOWN; - cfg->gap = 10; - cfg->placement.x = 10; - cfg->placement.y = 10; + cfg = E_NEW(Config, 1); + cfg->cfd = NULL; + cfg->version = MOD_CFG_FILE_VERSION; + cfg->show_low = 0; + cfg->show_normal = 1; + cfg->show_critical = 1; + cfg->timeout = 5.0; + cfg->direction = DIRECTION_DOWN; + cfg->gap = 10; + cfg->placement.x = 10; + cfg->placement.y = 10; - return cfg; + return cfg; } static void _notification_cfg_free(Config *cfg) { - E_FREE(cfg); + E_FREE(cfg); } Modified: trunk/E-MODULES-EXTRA/notification/src/e_mod_main.h =================================================================== --- trunk/E-MODULES-EXTRA/notification/src/e_mod_main.h 2010-05-09 05:15:55 UTC (rev 48705) +++ trunk/E-MODULES-EXTRA/notification/src/e_mod_main.h 2010-05-09 05:38:55 UTC (rev 48706) @@ -2,12 +2,13 @@ #define E_MOD_MAIN_H #define HAVE_EDBUS 1 +#include <e.h> #include <E_Notification_Daemon.h> -#include <e.h> -#include <Evas.h> -#include <string.h> -#include <E_Notify.h> +/* #include <Evas.h> */ +/* #include <string.h> */ +/* #include <E_Notify.h> */ + #include "e_mod_macro.h" #include "e_mod_types.h" #include "e_mod_config_item.h" Modified: trunk/E-MODULES-EXTRA/notification/src/e_mod_popup.c =================================================================== --- trunk/E-MODULES-EXTRA/notification/src/e_mod_popup.c 2010-05-09 05:15:55 UTC (rev 48705) +++ trunk/E-MODULES-EXTRA/notification/src/e_mod_popup.c 2010-05-09 05:38:55 UTC (rev 48706) @@ -35,442 +35,482 @@ notification_popup_notify(E_Notification *n, unsigned int replaces_id, unsigned int id __UNUSED__, - char *appname) + const char *appname) { - int timeout; - Popup_Data *popup = NULL; - char urgency; + int timeout; + Popup_Data *popup = NULL; + char urgency; - urgency = e_notification_hint_urgency_get(n); - if (urgency == E_NOTIFICATION_URGENCY_LOW && !notification_cfg->show_low) - return 0; - else if (urgency == E_NOTIFICATION_URGENCY_NORMAL && !notification_cfg->show_normal) - return 0; - else if (urgency == E_NOTIFICATION_URGENCY_CRITICAL && !notification_cfg->show_critical) - return 0; + urgency = e_notification_hint_urgency_get(n); + if (urgency == E_NOTIFICATION_URGENCY_LOW && !notification_cfg->show_low) + return 0; + else if (urgency == E_NOTIFICATION_URGENCY_NORMAL && !notification_cfg->show_normal) + return 0; + else if (urgency == E_NOTIFICATION_URGENCY_CRITICAL && !notification_cfg->show_critical) + return 0; - if (replaces_id && (popup = _notification_popup_find(replaces_id))) - { - e_notification_ref(n); - if (popup->notif) - { - const char *body_old = e_notification_body_get(popup->notif); - const char *body_new = e_notification_body_get(n); - char *body_final; - int body_old_len, body_new_len; + if (replaces_id && (popup = _notification_popup_find(replaces_id))) + { + e_notification_ref(n); + if (popup->notif) + { + /* const char *body_old = e_notification_body_get(popup->notif); */ + /* const char *body_new = e_notification_body_get(n); + * char *body_final; + * int body_old_len, body_new_len; + * + * body_old_len = strlen(body_old); + * body_new_len = strlen(body_new); + * body_final = alloca(body_old_len + body_new_len + 2); + * sprintf(body_final, "%s\n%s", body_old, body_new); */ + /* e_notification_body_set(n, body_new); */ - body_old_len = strlen(body_old); - body_new_len = strlen(body_new); - body_final = alloca(body_old_len + body_new_len + 2); - sprintf(body_final, "%s\n%s", body_old, body_new); - e_notification_body_set(n, body_final); + e_notification_unref(popup->notif); + } + popup->notif = n; + /* edje_object_signal_emit(popup->theme, "notification,del", "notification"); */ + _notification_popup_refresh(popup); + /* edje_object_signal_emit(popup->theme, "notification,new", "notification"); */ + } - e_notification_unref(popup->notif); - } - popup->notif = n; - edje_object_signal_emit(popup->theme, "notification,del", "notification"); - } + if (!popup) + { + popup = _notification_popup_new(n); + notification_cfg->popups = eina_list_append(notification_cfg->popups, popup); + edje_object_signal_emit(popup->theme, "notification,new", "notification"); + } - if (!popup) - { - popup = _notification_popup_new(n); - notification_cfg->popups = eina_list_append(notification_cfg->popups, popup); - edje_object_signal_emit(popup->theme, "notification,new", "notification"); - } - - if (popup->timer) - { - ecore_timer_del(popup->timer); - popup->timer = NULL; - } - timeout = e_notification_timeout_get(popup->notif); - if ((timeout == 0 || timeout == -1) && notification_cfg->timeout == 0.0) - return 1; - else - popup->timer = ecore_timer_add(timeout == -1 ? notification_cfg->timeout : (float)timeout / 1000, - _notification_timer_cb, - popup); - return 1; + if (popup->timer) + { + ecore_timer_del(popup->timer); + popup->timer = NULL; + } + timeout = e_notification_timeout_get(popup->notif); + if ((timeout == 0 || timeout == -1) && notification_cfg->timeout == 0.0) + return 1; + else + popup->timer = ecore_timer_add(timeout == -1 ? notification_cfg->timeout : (float)timeout / 1000, + _notification_timer_cb, + popup); + return 1; } void notification_popup_shutdown(void) { - Eina_List *l, *next; - Popup_Data *popup; + Eina_List *l, *next; + Popup_Data *popup; - for (l = notification_cfg->popups; l && (popup = l->data); l = next) - { - next = l->next; - _notification_popdown(popup, E_NOTIFICATION_CLOSED_REQUESTED); - notification_cfg->popups = eina_list_remove_list(notification_cfg->popups, l); - } + for (l = notification_cfg->popups; l && (popup = l->data); l = next) + { + next = l->next; + _notification_popdown(popup, E_NOTIFICATION_CLOSED_REQUESTED); + notification_cfg->popups = eina_list_remove_list(notification_cfg->popups, l); + } } void notification_popup_close(unsigned int id) { - _notification_popup_del(id, E_NOTIFICATION_CLOSED_REQUESTED); + _notification_popup_del(id, E_NOTIFICATION_CLOSED_REQUESTED); } static Popup_Data * _notification_popup_new(E_Notification *n) { - E_Container *con; - Popup_Data *popup; - char buf[PATH_MAX]; - int shaped; + E_Container *con; + Popup_Data *popup; + char buf[PATH_MAX]; + int shaped; - popup = calloc(1, sizeof(Popup_Data)); - if (!popup) return NULL; - e_notification_ref(n); - popup->notif = n; + popup = calloc(1, sizeof(Popup_Data)); + if (!popup) return NULL; + e_notification_ref(n); + popup->notif = n; - con = e_container_current_get(e_manager_current_get()); + con = e_container_current_get(e_manager_current_get()); - /* Create the popup window */ - popup->win = e_popup_new(e_zone_current_get(con), 0, 0, 0, 0); - e_popup_edje_bg_object_set(popup->win, popup->theme); - popup->e = popup->win->evas; + /* Create the popup window */ + popup->win = e_popup_new(e_zone_current_get(con), 0, 0, 0, 0); + e_popup_edje_bg_object_set(popup->win, popup->theme); + popup->e = popup->win->evas; - /* Setup the theme */ - snprintf(buf, sizeof(buf), "%s/e-module-notification.edj", notification_mod->dir); - popup->theme = edje_object_add(popup->e); + /* Setup the theme */ + snprintf(buf, sizeof(buf), "%s/e-module-notification.edj", notification_mod->dir); + popup->theme = edje_object_add(popup->e); - shaped = 0; - if (e_config->use_composite) - { - if (e_theme_edje_object_set(popup->theme, - "base/theme/modules/notification", - "modules/notification/main/alpha")) - shaped = 1; - else if (edje_object_file_set(popup->theme, buf, - "modules/notification/main/alpha")) - shaped = 1; - } + shaped = 0; + if (e_config->use_composite) + { + if (e_theme_edje_object_set(popup->theme, + "base/theme/modules/notification", + "modules/notification/main/alpha")) + shaped = 1; + else if (edje_object_file_set(popup->theme, buf, + "modules/notification/main/alpha")) + shaped = 1; + } - if ((!e_config->use_composite) || - (edje_object_load_error_get(popup->theme) != EDJE_LOAD_ERROR_NONE)) - { - const char *shape_option; + if ((!e_config->use_composite) || + (edje_object_load_error_get(popup->theme) != EDJE_LOAD_ERROR_NONE)) + { + const char *shape_option; - if (!e_theme_edje_object_set(popup->theme, - "base/theme/modules/notification", - "modules/notification/main")) - edje_object_file_set(popup->theme, buf, "modules/notification/main"); + if (!e_theme_edje_object_set(popup->theme, + "base/theme/modules/notification", + "modules/notification/main")) + edje_object_file_set(popup->theme, buf, "modules/notification/main"); - shape_option = edje_object_data_get(popup->theme, "shaped"); - if (shape_option) - { - if (!strcmp(shape_option, "1")) - shaped = 1; - else - shaped = 0; - } - } + shape_option = edje_object_data_get(popup->theme, "shaped"); + if (shape_option) + { + if (!strcmp(shape_option, "1")) + shaped = 1; + else + shaped = 0; + } + } - if (e_config->use_composite) - { - ecore_evas_alpha_set(popup->win->ecore_evas, shaped); - } - else - { - ecore_evas_shaped_set(popup->win->ecore_evas, shaped); - ecore_evas_avoid_damage_set(popup->win->ecore_evas, shaped); - } + if (e_config->use_composite) + { + ecore_evas_alpha_set(popup->win->ecore_evas, shaped); + } + else + { + ecore_evas_shaped_set(popup->win->ecore_evas, shaped); + ecore_evas_avoid_damage_set(popup->win->ecore_evas, shaped); + } - evas_object_show(popup->theme); - edje_object_signal_callback_add - (popup->theme, "notification,deleted", "theme", - _notification_theme_cb_deleted, popup); - edje_object_signal_callback_add - (popup->theme, "notification,close", "theme", - _notification_theme_cb_close, popup); - edje_object_signal_callback_add - (popup->theme, "notification,find", "theme", - _notification_theme_cb_find, popup); + evas_object_show(popup->theme); + edje_object_signal_callback_add + (popup->theme, "notification,deleted", "theme", + _notification_theme_cb_deleted, popup); + edje_object_signal_callback_add + (popup->theme, "notification,close", "theme", + _notification_theme_cb_close, popup); + edje_object_signal_callback_add + (popup->theme, "notification,find", "theme", + _notification_theme_cb_find, popup); - _notification_popup_refresh(popup); - _notification_popup_place(popup, eina_list_count(notification_cfg->popups)); - e_popup_show(popup->win); - e_popup_layer_set(popup->win, 999); + _notification_popup_refresh(popup); + _notification_popup_place(popup, eina_list_count(notification_cfg->popups)); + e_popup_show(popup->win); + e_popup_layer_set(popup->win, 999); - return popup; + return popup; } static void _notification_popup_place(Popup_Data *popup, int num) { - int x, y, w, h, dir = 0; + int x, y, w, h, dir = 0; - evas_object_geometry_get(popup->theme, NULL, NULL, &w, &h); - if (e_notification_hint_xy_get(popup->notif, &x, &y)) - { - E_Container *con; - con = e_container_current_get(e_manager_current_get()); + evas_object_geometry_get(popup->theme, NULL, NULL, &w, &h); + if (e_notification_hint_xy_get(popup->notif, &x, &y)) + { + E_Container *con; + con = e_container_current_get(e_manager_current_get()); - if (x + w > con->w) - x -= w; - if (y + h > con->h) - y -= h; - e_popup_move(popup->win, x, y); - } - else - { - switch (notification_cfg->direction) - { - case DIRECTION_DOWN: - case DIRECTION_RIGHT: - dir = 1; - break; - case DIRECTION_UP: - case DIRECTION_LEFT: - dir = -1; - break; - } + if (x + w > con->w) + x -= w; + if (y + h > con->h) + y -= h; + e_popup_move(popup->win, x, y); + } + else + { + switch (notification_cfg->direction) + { + case DIRECTION_DOWN: + case DIRECTION_RIGHT: + dir = 1; + break; + case DIRECTION_UP: + case DIRECTION_LEFT: + dir = -1; + break; + } - if (notification_cfg->direction == DIRECTION_DOWN || - notification_cfg->direction == DIRECTION_UP) - e_popup_move(popup->win, - notification_cfg->placement.x, - notification_cfg->placement.y - + dir * num * (h + notification_cfg->gap)); - else - e_popup_move(popup->win, - notification_cfg->placement.x - + dir * num * (w + notification_cfg->gap), - notification_cfg->placement.y); - } + if (notification_cfg->direction == DIRECTION_DOWN || + notification_cfg->direction == DIRECTION_UP) + e_popup_move(popup->win, + notification_cfg->placement.x, + notification_cfg->placement.y + + dir * num * (h + notification_cfg->gap)); + else + e_popup_move(popup->win, + notification_cfg->placement.x + + dir * num * (w + notification_cfg->gap), + notification_cfg->placement.y); + } } static void _notification_popup_refresh(Popup_Data *popup) { - const char *icon_path; - const char *app_icon_max; - char *msg; - void *img; - int w, h, width = 80, height = 80; + const char *icon_path; + const char *app_icon_max; + char *msg; + void *img; + int w, h, width = 80, height = 80; - if (!popup) return; + if (!popup) return; - popup->app_name = e_notification_app_name_get(popup->notif); + popup->app_name = e_notification_app_name_get(popup->notif); - if (popup->app_icon) - { - edje_object_part_unswallow(popup->theme, popup->app_icon); - evas_object_del(popup->app_icon); - popup->app_icon = NULL; - } + if (popup->app_icon) + { + edje_object_part_unswallow(popup->theme, popup->app_icon); + evas_object_del(popup->app_icon); + popup->app_icon = NULL; + } - app_icon_max = edje_object_data_get(popup->theme, "app_icon_max"); - if (app_icon_max) - { - char *endptr; + app_icon_max = edje_object_data_get(popup->theme, "app_icon_max"); + if (app_icon_max) + { + char *endptr; - errno = 0; - width = strtol(app_icon_max, &endptr, 10); - if ((errno != 0 && width == 0) || endptr == app_icon_max) - { - width = 80; - height = 80; - } - else - { - endptr++; - if (endptr) height = strtol(endptr, NULL, 10); - else height = 80; - } - } + errno = 0; + width = strtol(app_icon_max, &endptr, 10); + if ((errno != 0 && width == 0) || endptr == app_icon_max) + { + width = 80; + height = 80; + } + else + { + endptr++; + if (endptr) height = strtol(endptr, NULL, 10); + else height = 80; + } + } - /* Check if the app specify an icon either by a path or by a hint */ - if ((icon_path = e_notification_app_icon_get(popup->notif)) && *icon_path) - { - if (!strncmp(icon_path, "file://", 7)) icon_path += 7; - if (!ecore_file_exists(icon_path)) - { - const char *new_path; - unsigned int size; + /* Check if the app specify an icon either by a path or by a hint */ + if ((icon_path = e_notification_app_icon_get(popup->notif)) && *icon_path) + { + if (!strncmp(icon_path, "file://", 7)) icon_path += 7; + if (!ecore_file_exists(icon_path)) + { + const char *new_path; + unsigned int size; - size = e_util_icon_size_normalize(width * e_scale); - new_path = efreet_icon_path_find(e_config->icon_theme, icon_path, size); - if (new_path) - icon_path = new_path; - else - { - Evas_Object *o = e_icon_add(popup->e); - if (!e_util_icon_theme_set(o, icon_path)) - evas_object_del(o); - else - { - popup->app_icon = o; - w = width; - h = height; - } - } - } + size = e_util_icon_size_normalize(width * e_scale); + new_path = efreet_icon_path_find(e_config->icon_theme, icon_path, size); + if (new_path) + icon_path = new_path; + else + { + Evas_Object *o = e_icon_add(popup->e); + if (!e_util_icon_theme_set(o, icon_path)) + evas_object_del(o); + else + { + popup->app_icon = o; + w = width; + h = height; + } + } + } - if (!popup->app_icon) - { - popup->app_icon = evas_object_image_add(popup->e); - evas_object_image_file_set(popup->app_icon, icon_path, NULL); - if (evas_object_image_load_error_get(popup->app_icon)) - { - evas_object_del(popup->app_icon); - popup->app_icon = NULL; - } - else - { - evas_object_image_size_get(popup->app_icon, &w, &h); - evas_object_image_fill_set(popup->app_icon, 0, 0, w, h); - } - } - } - else if ((img = e_notification_hint_icon_data_get(popup->notif))) - { - popup->app_icon = e_notification_image_evas_object_add(popup->e, img); - evas_object_image_size_get(popup->app_icon, &w, &h); - } + if (!popup->app_icon) + { + popup->app_icon = evas_object_image_add(popup->e); + evas_object_image_file_set(popup->app_icon, icon_path, NULL); + if (evas_object_image_load_error_get(popup->app_icon)) + { + evas_object_del(popup->app_icon); + popup->app_icon = NULL; + } + else + { + evas_object_image_size_get(popup->app_icon, &w, &h); + evas_object_image_fill_set(popup->app_icon, 0, 0, w, h); + } + } + } + else if ((img = e_notification_hint_icon_data_get(popup->notif))) + { + popup->app_icon = e_notification_image_evas_object_add(popup->e, img); + evas_object_image_size_get(popup->app_icon, &w, &h); + } - if (!popup->app_icon) - { - char buf[PATH_MAX]; + if (!popup->app_icon) + { + char buf[PATH_MAX]; - snprintf(buf, sizeof(buf), "%s/e-module-notification.edj", notification_mod->dir); - popup->app_icon = edje_object_add(popup->e); - if (!e_theme_edje_object_set(popup->app_icon, "base/theme/modules/notification", - "modules/notification/logo")) - edje_object_file_set(popup->app_icon, buf, "modules/notification/logo"); - w = width; h = height; - } + snprintf(buf, sizeof(buf), "%s/e-module-notification.edj", notification_mod->dir); + popup->app_icon = edje_object_add(popup->e); + if (!e_theme_edje_object_set(popup->app_icon, "base/theme/modules/notification", + "modules/notification/logo")) + edje_object_file_set(popup->app_icon, buf, "modules/notification/logo"); + w = width; h = height; + } - if (w > width || h > height) - { - int v; - v = w > h ? w : h; - h = h * height / v; - w = w * width / v; - evas_object_image_fill_set(popup->app_icon, 0, 0, w, h); - evas_object_resize(popup->app_icon, w, h); - edje_extern_object_min_size_set(popup->app_icon, w, h); - edje_extern_object_max_size_set(popup->app_icon, w, h); - } - else - { - evas_object_resize(popup->app_icon, w, h); - edje_extern_object_min_size_set(popup->app_icon, w, h); - edje_extern_object_max_size_set(popup->app_icon, w, h); - } + if (w > width || h > height) + { + int v; + v = w > h ? w : h; + h = h * height / v; + w = w * width / v; + evas_object_image_fill_set(popup->app_icon, 0, 0, w, h); + evas_object_resize(popup->app_icon, w, h); + edje_extern_object_min_size_set(popup->app_icon, w, h); + edje_extern_object_max_size_set(popup->app_icon, w, h); + } + else + { + evas_object_resize(popup->app_icon, w, h); + edje_extern_object_min_size_set(popup->app_icon, w, h); + edje_extern_object_max_size_set(popup->app_icon, w, h); + } - edje_object_calc_force(popup->theme); - edje_object_part_swallow(popup->theme, "notification.swallow.app_icon", popup->app_icon); - edje_object_signal_emit(popup->theme, "notification,icon", "notification"); + edje_object_calc_force(popup->theme); + edje_object_part_swallow(popup->theme, "notification.swallow.app_icon", popup->app_icon); + edje_object_signal_emit(popup->theme, "notification,icon", "notification"); - /* Fill up the event message */ - _notification_format_message(popup); + /* Fill up the event message */ + _notification_format_message(popup); - /* Compute the new size of the popup */ - edje_object_calc_force(popup->theme); - edje_object_size_min_calc(popup->theme, &w, &h); - e_popup_resize(popup->win, w, h); - evas_object_resize(popup->theme, w, h); + /* Compute the new size of the popup */ + edje_object_calc_force(popup->theme); + edje_object_size_min_calc(popup->theme, &w, &h); + e_popup_resize(popup->win, w, h); + evas_object_resize(popup->theme, w, h); } static Popup_Data * _notification_popup_find(unsigned int id) { - Eina_List *l; - Popup_Data *popup; + Eina_List *l; + Popup_Data *popup; - for (l = notification_cfg->popups; l && (popup = l->data); l = l->next) - if (e_notification_id_get(popup->notif) == id) return popup; + EINA_LIST_FOREACH (notification_cfg->popups, l, popup) + if (e_notification_id_get(popup->notif) == id) + return popup; - return NULL; + return NULL; } static void _notification_popup_del(unsigned int id, E_Notification_Closed_Reason reason) { - Popup_Data *popup; - Eina_List *l, *next; - int i; + Popup_Data *popup; + Eina_List *l, *next; + int i; - for (l = notification_cfg->popups, i = 0; l && (popup = l->data); l = next) - { - next = l->next; - if (e_notification_id_get(popup->notif) == id) - { - _notification_popdown(popup, reason); - notification_cfg->popups = eina_list_remove_list(notification_cfg->popups, l); - } - else - { - _notification_popup_place(popup, i); - i++; - } - } + for (l = notification_cfg->popups, i = 0; l && (popup = l->data); l = next) + { + next = l->next; + if (e_notification_id_get(popup->notif) == id) + { + _notification_popdown(popup, reason); + notification_cfg->popups = eina_list_remove_list(notification_cfg->popups, l); + } + else + { + _notification_popup_place(popup, i); + i++; + } + } } static void _notification_popdown(Popup_Data *popup, E_Notification_Closed_Reason reason) { - if (popup->timer) ecore_timer_del(popup->timer); - e_popup_hide(popup->win); - evas_object_del(popup->app_icon); - evas_object_del(popup->theme); - e_object_del(E_OBJECT(popup->win)); - e_notification_closed_set(popup->notif, 1); - e_notification_daemon_signal_notification_closed(notification_cfg->daemon, - e_notification_id_get(popup->notif), - reason); - e_notification_unref(popup->notif); - free(popup); + if (popup->timer) ecore_timer_del(popup->timer); + e_popup_hide(popup->win); + evas_object_del(popup->app_icon); + evas_object_del(popup->theme); + e_object_del(E_OBJECT(popup->win)); + e_notification_closed_set(popup->notif, 1); + e_notification_daemon_signal_notification_closed(notification_cfg->daemon, + e_notification_id_get(popup->notif), + reason); + e_notification_unref(popup->notif); + free(popup); } -static void -_notification_format_message(Popup_Data *popup) +static char * +_str_append(char *str, const char *txt, int *len, int *alloc) { - Evas_Object *o = popup->theme; - const char *title = e_notification_summary_get(popup->notif); - const char *b = e_notification_body_get(popup->notif); - int size = strlen(b); - char *message = calloc(1, sizeof(char) * size), *tmp; - int i; + int txt_len = strlen(txt); - for (i = 0; *b != '\0' && i < size; i++, b++) - { - if (*b == '\n') - { - size += 3; - tmp = realloc(message, sizeof(char) * (size)); - if (tmp) - { - message = tmp; - message[i] = '<'; - message[++i] = 'b'; - message[++i] = 'r'; - message[++i] = '>'; - } - else break; - } - else - message[i] = *b; - } + if (txt_len <= 0) return str; + if ((*len + txt_len) >= *alloc) + { + char *str2; + int alloc2; - edje_object_part_text_set(o, "notification.text.title", title); - edje_object_part_text_set(o, "notification.textblock.message", message); - free(message); + alloc2 = *alloc + txt_len + 128; + str2 = realloc(str, alloc2); + if (!str2) return str; + *alloc = alloc2; + str = str2; + } + strcpy(str + *len, txt); + *len += txt_len; + return str; } +static char * +_text_to_mkup(const char *text) +{ + char *str = NULL; + int str_len = 0, str_alloc = 0; + int ch, pos = 0, pos2 = 0; + + if (!text) return NULL; + for (;;) + { + pos = pos2; + pos2 = evas_string_char_next_get((char *)(text), pos2, &ch); + if ((ch <= 0) || (pos2 <= 0)) break; + if (ch == '\n') + str = _str_append(str, "<br>", &str_len, &str_alloc); + else if (ch == '\t') + str = _str_append(str, "<\t>", &str_len, &str_alloc); + else if (ch == '<') + str = _str_append(str, "<", &str_len, &str_alloc); + else if (ch == '>') + str = _str_append(str, ">", &str_len, &str_alloc); + else if (ch == '&') + str = _str_append(str, "&", &str_len, &str_alloc); + else + { + char tstr[16]; + + strncpy(tstr, text + pos, pos2 - pos); + tstr[pos2 - pos] = 0; + str = _str_append(str, tstr, &str_len, &str_alloc); + } + } + return str; +} + static void +_notification_format_message(Popup_Data *popup) +{ + Evas_Object *o = popup->theme; + const char *title = e_notification_summary_get(popup->notif); + const char *b = e_notification_body_get(popup->notif); + char *message = _text_to_mkup(b); + edje_object_part_text_set(o, "notification.text.title", title); + if (message) + { + edje_object_part_text_set(o, "notification.textblock.message", message); + free(message); + } +} + +static void _notification_theme_cb_deleted(void *data, Evas_Object *obj __UNUSED__, const char *emission __UNUSED__, const char *source __UNUSED__) { - Popup_Data *popup = data; - _notification_popup_refresh(popup); - edje_object_signal_emit(popup->theme, "notification,new", "notification"); + Popup_Data *popup = data; + _notification_popup_refresh(popup); + edje_object_signal_emit(popup->theme, "notification,new", "notification"); } static void @@ -479,9 +519,9 @@ const char *emission __UNUSED__, const char *source __UNUSED__) { - Popup_Data *popup = data; - _notification_popup_del(e_notification_id_get(popup->notif), - E_NOTIFICATION_CLOSED_DISMISSED); + Popup_Data *popup = data; + _notification_popup_del(e_notification_id_get(popup->notif), + E_NOTIFICATION_CLOSED_DISMISSED); } static void @@ -490,41 +530,41 @@ const char *emission __UNUSED__, const char *source __UNUSED__) { - Popup_Data *popup = data; - Eina_List *l; + Popup_Data *popup = data; + Eina_List *l; - if (!popup->app_name) return; + if (!popup->app_name) return; - for (l = e_border_client_list(); l; l = l->next) - { - size_t compare_len; - E_Border *bd = l->data; + for (l = e_border_client_list(); l; l = l->next) + { + size_t compare_len; + E_Border *bd = l->data; - compare_len = strlen(popup->app_name); - if (strlen(bd->client.icccm.name) < compare_len) - compare_len = strlen(bd->client.icccm.name); + compare_len = strlen(popup->app_name); + if (strlen(bd->client.icccm.name) < compare_len) + compare_len = strlen(bd->client.icccm.name); - /* We can't be sure that the app_name really match the application name. - * Some plugin put their name instead. But this search gives some good - * results. - */ - if (!strncasecmp(bd->client.icccm.name, popup->app_name, compare_len)) - { - e_desk_show(bd->desk); - e_border_show(bd); - e_border_raise(bd); - e_border_focus_set_with_pointer(bd); - break; - } - } + /* We can't be sure that the app_name really match the application name. + * Some plugin put their name instead. But this search gives some good + * results. + */ + if (!strncasecmp(bd->client.icccm.name, popup->app_name, compare_len)) + { + e_desk_show(bd->desk); + e_border_show(bd); + e_border_raise(bd); + e_border_focus_set_with_pointer(bd); + break; + } + } } static int _notification_timer_cb(void *data) { - Popup_Data *popup = data; - _notification_popup_del(e_notification_id_get(popup->notif), - E_NOTIFICATION_CLOSED_EXPIRED); - return 0; + Popup_Data *popup = data; + _notification_popup_del(e_notification_id_get(popup->notif), + E_NOTIFICATION_CLOSED_EXPIRED); + return 0; } Modified: trunk/E-MODULES-EXTRA/notification/src/e_mod_popup.h =================================================================== --- trunk/E-MODULES-EXTRA/notification/src/e_mod_popup.h 2010-05-09 05:15:55 UTC (rev 48705) +++ trunk/E-MODULES-EXTRA/notification/src/e_mod_popup.h 2010-05-09 05:38:55 UTC (rev 48706) @@ -15,7 +15,7 @@ int notification_popup_notify (E_Notification *n, unsigned int replaces_id, unsigned int id, - char *appname); + const char *appname); void notification_popup_shutdown (void); void notification_popup_close (unsigned int id); |
From: Enlightenment S. <no-...@en...> - 2010-05-12 20:55:43
|
Log: - simplify placement - remove text conversion. body content has already the right markup Author: jeffdameth Date: 2010-05-12 13:55:36 -0700 (Wed, 12 May 2010) New Revision: 48788 Removed: trunk/E-MODULES-EXTRA/notification/src/e_mod_box.h trunk/E-MODULES-EXTRA/notification/src/e_mod_config_item.h trunk/E-MODULES-EXTRA/notification/src/e_mod_macro.h trunk/E-MODULES-EXTRA/notification/src/e_mod_popup.h trunk/E-MODULES-EXTRA/notification/src/e_mod_types.h Modified: trunk/E-MODULES-EXTRA/notification/src/Makefile.am trunk/E-MODULES-EXTRA/notification/src/e_mod_config.c trunk/E-MODULES-EXTRA/notification/src/e_mod_main.c trunk/E-MODULES-EXTRA/notification/src/e_mod_main.h trunk/E-MODULES-EXTRA/notification/src/e_mod_popup.c Modified: trunk/E-MODULES-EXTRA/notification/src/Makefile.am =================================================================== --- trunk/E-MODULES-EXTRA/notification/src/Makefile.am 2010-05-12 19:58:40 UTC (rev 48787) +++ trunk/E-MODULES-EXTRA/notification/src/Makefile.am 2010-05-12 20:55:36 UTC (rev 48788) @@ -9,14 +9,9 @@ pkg_LTLIBRARIES = module.la module_la_SOURCES = e_mod_main.h \ e_mod_main.c \ - e_mod_macro.h \ - e_mod_types.h \ - e_mod_box.h \ e_mod_box.c \ - e_mod_popup.h \ e_mod_popup.c \ e_mod_config.c \ - e_mod_config_item.h \ e_mod_config_item.c module_la_LIBADD = @E_LIBS@ @ENOTIFY_LIBS@ Modified: trunk/E-MODULES-EXTRA/notification/src/e_mod_config.c =================================================================== --- trunk/E-MODULES-EXTRA/notification/src/e_mod_config.c 2010-05-12 19:58:40 UTC (rev 48787) +++ trunk/E-MODULES-EXTRA/notification/src/e_mod_config.c 2010-05-12 20:55:36 UTC (rev 48788) @@ -2,17 +2,11 @@ struct _E_Config_Dialog_Data { - int direction; int show_low; int show_normal; int show_critical; double timeout; - int gap; - struct - { - int x; - int y; - } placement; + int corner; }; /* local function protos */ @@ -71,10 +65,7 @@ cfdata->show_normal = notification_cfg->show_normal; cfdata->show_critical = notification_cfg->show_critical; cfdata->timeout = notification_cfg->timeout; - cfdata->direction = notification_cfg->direction; - cfdata->gap = notification_cfg->gap; - cfdata->placement.x = notification_cfg->placement.x; - cfdata->placement.y = notification_cfg->placement.y; + cfdata->corner = notification_cfg->corner; } static Evas_Object * @@ -102,37 +93,35 @@ e_widget_framelist_object_append(of, ow); e_widget_list_object_append(o, of, 1, 1, 0.5); - man = e_manager_current_get(); - of = e_widget_framelist_add(evas, D_("Placement"), 0); - ow = e_widget_slider_add(evas, 1, 0, D_("%2.0f x"), 0.0, man->w, 1.0, 0, - NULL, &(cfdata->placement.x), 200); - e_widget_framelist_object_append(of, ow); - ow = e_widget_slider_add(evas, 1, 0, D_("%2.0f y"), 0.0, man->h, 1.0, 0, - NULL, &(cfdata->placement.y), 200); - e_widget_framelist_object_append(of, ow); - e_widget_list_object_append(o, of, 1, 1, 0.5); + /* man = e_manager_current_get(); + * of = e_widget_framelist_add(evas, D_("Placement"), 0); + * ow = e_widget_slider_add(evas, 1, 0, D_("%2.0f x"), 0.0, man->w, 1.0, 0, + * NULL, &(cfdata->placement.x), 200); + * e_widget_framelist_object_append(of, ow); + * ow = e_widget_slider_add(evas, 1, 0, D_("%2.0f y"), 0.0, man->h, 1.0, 0, + * NULL, &(cfdata->placement.y), 200); + * e_widget_framelist_object_append(of, ow); + * e_widget_list_object_append(o, of, 1, 1, 0.5); */ - of = e_widget_framelist_add(evas, D_("Direction"), 0); - ow = e_widget_label_add(evas, D_("Direction in which popups will stack themselves : ")); + of = e_widget_framelist_add(evas, D_("Popup Corner"), 0); + rg = e_widget_radio_group_new(&(cfdata->corner)); + ow = e_widget_radio_add(evas, "Top left", CORNER_TL, rg); e_widget_framelist_object_append(of, ow); - rg = e_widget_radio_group_new(&(cfdata->direction)); - ow = e_widget_radio_add(evas, "up", DIRECTION_UP, rg); + ow = e_widget_radio_add(evas, "Top right", CORNER_TR, rg); e_widget_framelist_object_append(of, ow); - ow = e_widget_radio_add(evas, "down", DIRECTION_DOWN, rg); + ow = e_widget_radio_add(evas, "Botton left", CORNER_BL, rg); e_widget_framelist_object_append(of, ow); - ow = e_widget_radio_add(evas, "left", DIRECTION_LEFT, rg); + ow = e_widget_radio_add(evas, "Bottom right", CORNER_BR, rg); e_widget_framelist_object_append(of, ow); - ow = e_widget_radio_add(evas, "right", DIRECTION_RIGHT, rg); - e_widget_framelist_object_append(of, ow); e_widget_list_object_append(o, of, 1, 1, 0.5); - of = e_widget_framelist_add(evas, D_("Gap"), 0); - ow = e_widget_label_add(evas, D_("Size of the gap between two popups : ")); - e_widget_framelist_object_append(of, ow); - ow = e_widget_slider_add(evas, 1, 0, D_("%2.0f pixels"), 0.0, 50, 1.0, 0, - NULL, &(cfdata->gap), 200); - e_widget_framelist_object_append(of, ow); - e_widget_list_object_append(o, of, 1, 1, 0.5); + /* of = e_widget_framelist_add(evas, D_("Gap"), 0); + * ow = e_widget_label_add(evas, D_("Size of the gap between two popups : ")); + * e_widget_framelist_object_append(of, ow); + * ow = e_widget_slider_add(evas, 1, 0, D_("%2.0f pixels"), 0.0, 50, 1.0, 0, + * NULL, &(cfdata->gap), 200); + * e_widget_framelist_object_append(of, ow); + * e_widget_list_object_append(o, of, 1, 1, 0.5); */ return o; } @@ -144,10 +133,7 @@ notification_cfg->show_normal = cfdata->show_normal; notification_cfg->show_critical = cfdata->show_critical; notification_cfg->timeout = cfdata->timeout; - notification_cfg->direction = cfdata->direction; - notification_cfg->gap = cfdata->gap; - notification_cfg->placement.x = cfdata->placement.x; - notification_cfg->placement.y = cfdata->placement.y; + notification_cfg->corner = cfdata->corner; e_modapi_save(notification_mod); return 1; Modified: trunk/E-MODULES-EXTRA/notification/src/e_mod_main.c =================================================================== --- trunk/E-MODULES-EXTRA/notification/src/e_mod_main.c 2010-05-12 19:58:40 UTC (rev 48787) +++ trunk/E-MODULES-EXTRA/notification/src/e_mod_main.c 2010-05-12 20:55:36 UTC (rev 48788) @@ -325,57 +325,19 @@ E_CONFIG_VAL(D, T, show_low, INT); E_CONFIG_VAL(D, T, show_normal, INT); E_CONFIG_VAL(D, T, show_critical, INT); - E_CONFIG_VAL(D, T, direction, INT); - E_CONFIG_VAL(D, T, gap, INT); - E_CONFIG_VAL(D, T, placement.x, INT); - E_CONFIG_VAL(D, T, placement.y, INT); + E_CONFIG_VAL(D, T, corner, INT); E_CONFIG_VAL(D, T, timeout, FLOAT); E_CONFIG_LIST(D, T, items, conf_item_edd); notification_cfg = e_config_domain_load("module.notification", conf_edd); - if (notification_cfg) + if (notification_cfg && + !(e_util_module_config_check + (D_("Notification Module"), notification_cfg->version, + MOD_CFG_FILE_EPOCH, MOD_CFG_FILE_VERSION))) { - if (notification_cfg->version == 0) - { - _notification_cfg_free(notification_cfg); - notification_cfg = NULL; - } - if ((notification_cfg->version >> 16) < MOD_CFG_FILE_EPOCH) - { - _notification_cfg_free(notification_cfg); - notification_cfg = NULL; - e_util_dialog_show(D_("Notification Configuration Updated"), - D_("Notification Module Configuration data needed " - "upgrading. Your old configuration<br> has been" - " wiped and a new set of defaults initialized. " - "This<br>will happen regularly during " - "development, so don't report a<br>bug. " - "This simply means the Notification module needs " - "new configuration<br>data by default for " - "usable functionality that your old<br>" - "configuration simply lacks. This new set of " - "defaults will fix<br>that by adding it in. " - "You can re-configure things now to your<br>" - "liking. Sorry for the inconvenience.<br>")); - } - else if (notification_cfg->version > MOD_CFG_FILE_VERSION) - { - _notification_cfg_free(notification_cfg); - notification_cfg = NULL; - e_util_dialog_show(D_("Notification Configuration Updated"), - D_("Your Notification Module Configuration is NEWER " - "than the Notification Module version. This is " - "very<br>strange. This should not happen unless" - " you downgraded<br>the Notification Module or " - "copied the configuration from a place where" - "<br>a newer version of the Notification Module " - "was running. This is bad and<br>as a " - "precaution your configuration has been now " - "restored to<br>defaults. Sorry for the " - "inconvenience.<br>")); - } + _notification_cfg_free(notification_cfg); } - + if (!notification_cfg) { notification_cfg = _notification_cfg_new(); @@ -511,10 +473,7 @@ cfg->show_normal = 1; cfg->show_critical = 1; cfg->timeout = 5.0; - cfg->direction = DIRECTION_DOWN; - cfg->gap = 10; - cfg->placement.x = 10; - cfg->placement.y = 10; + cfg->corner = CORNER_TR; return cfg; } Modified: trunk/E-MODULES-EXTRA/notification/src/e_mod_main.h =================================================================== --- trunk/E-MODULES-EXTRA/notification/src/e_mod_main.h 2010-05-12 19:58:40 UTC (rev 48787) +++ trunk/E-MODULES-EXTRA/notification/src/e_mod_main.h 2010-05-12 20:55:36 UTC (rev 48788) @@ -4,24 +4,36 @@ #define HAVE_EDBUS 1 #include <e.h> #include <E_Notification_Daemon.h> +#include "config.h" -/* #include <Evas.h> */ -/* #include <string.h> */ -/* #include <E_Notify.h> */ +#define D_(str) dgettext(PACKAGE, str) -#include "e_mod_macro.h" -#include "e_mod_types.h" -#include "e_mod_config_item.h" -#include "e_mod_box.h" -#include "e_mod_popup.h" -#include "config.h" +#define MOD_CFG_FILE_EPOCH 0x0002 +#define MOD_CFG_FILE_GENERATION 0x0004 +#define MOD_CFG_FILE_VERSION \ + ((MOD_CFG_FILE_EPOCH << 16) | MOD_CFG_FILE_GENERATION) -enum _Popup_Direction +#undef MIN_LEN +#define MIN_LEN(str1, str2) strlen(str1) < strlen(str2) ? strlen(str1) : strlen(str2) + +#undef MAX +#define MAX(x, y) (((x) > (y)) ? (x) : (y)) + + +typedef enum _Popup_Corner Popup_Corner; +typedef struct _Config Config; +typedef struct _Config_Item Config_Item; +typedef struct _Instance Instance; +typedef struct _Popup_Data Popup_Data; +typedef struct _Notification_Box Notification_Box; +typedef struct _Notification_Box_Icon Notification_Box_Icon; + +enum _Popup_Corner { - DIRECTION_UP, - DIRECTION_DOWN, - DIRECTION_LEFT, - DIRECTION_RIGHT + CORNER_TL, + CORNER_TR, + CORNER_BL, + CORNER_BR }; struct _Config @@ -33,24 +45,14 @@ int show_normal; int show_critical; float timeout; - Popup_Direction direction; - int gap; - struct - { - int x; - int y; - } placement; + Popup_Corner corner; - E_Notification_Daemon *daemon; - struct { Eina_Bool presentation; Eina_Bool offline; } last_config_mode; - - Ecore_Timer *initial_mode_timer; - + Eina_List *instances; Eina_List *n_box; Eina_List *config_dialog; @@ -59,6 +61,9 @@ Eina_List *items; Eina_List *popups; int next_id; + + Ecore_Timer *initial_mode_timer; + E_Notification_Daemon *daemon; }; struct _Config_Item @@ -79,16 +84,70 @@ Config_Item *ci; }; + +struct _Notification_Box +{ + const char *id; + Instance *inst; + Evas_Object *o_box; + Evas_Object *o_empty; + Eina_List *icons; +}; + +struct _Notification_Box_Icon +{ + Notification_Box *n_box; + unsigned int n_id; + const char *label; + Evas_Object *o_holder; + Evas_Object *o_icon; + Evas_Object *o_holder2; + Evas_Object *o_icon2; + E_Border *border; + E_Notification *notif; + + int popup; + Ecore_Timer *mouse_in_timer; +}; + +struct _Popup_Data +{ + E_Notification *notif; + E_Popup *win; + Evas *e; + Evas_Object *theme; + const char *app_name; + Evas_Object *app_icon; + Ecore_Timer *timer; +}; + + +int notification_popup_notify(E_Notification *n, unsigned int replaces_id, unsigned int id, const char *appname); +void notification_popup_shutdown(void); +void notification_popup_close(unsigned int id); + +int notification_box_notify(E_Notification *n, unsigned int replaces_id, unsigned int id); +void notification_box_shutdown(void); +void notification_box_del(const char *id); +void notification_box_show(Notification_Box *b); +void notification_box_hide(Notification_Box *b); +Notification_Box *notification_box_get(const char *id, Evas *evas); +Config_Item *notification_box_config_item_get(const char *id); +void notification_box_orient_set(Notification_Box *b, int horizontal); +void notification_box_cb_obj_moveresize(void *data, Evas *e, Evas_Object *obj, void *event_info); +int notification_box_cb_border_remove(void *data, int type, void *event); + EAPI extern E_Module_Api e_modapi; - EAPI void *e_modapi_init(E_Module *m); EAPI int e_modapi_shutdown(E_Module *m); EAPI int e_modapi_save(E_Module *m); -void _gc_orient (E_Gadcon_Client *gcc, E_Gadcon_Orient orient); +void _gc_orient (E_Gadcon_Client *gcc, E_Gadcon_Orient orient); +void config_notification_box_module(Config_Item *ci); + E_Config_Dialog *e_int_config_notification_module(E_Container *con, - const char *params __UNUSED__); + const char *params __UNUSED__); extern E_Module *notification_mod; extern Config *notification_cfg; Modified: trunk/E-MODULES-EXTRA/notification/src/e_mod_popup.c =================================================================== --- trunk/E-MODULES-EXTRA/notification/src/e_mod_popup.c 2010-05-12 19:58:40 UTC (rev 48787) +++ trunk/E-MODULES-EXTRA/notification/src/e_mod_popup.c 2010-05-12 20:55:36 UTC (rev 48788) @@ -204,44 +204,48 @@ _notification_popup_place(Popup_Data *popup, int num) { int x, y, w, h, dir = 0; - + E_Container *con; + + con = e_container_current_get(e_manager_current_get()); evas_object_geometry_get(popup->theme, NULL, NULL, &w, &h); - if (e_notification_hint_xy_get(popup->notif, &x, &y)) - { - E_Container *con; - con = e_container_current_get(e_manager_current_get()); + int gap = 10; + int to_edge = 15; + + /* if (e_notification_hint_xy_get(popup->notif, &x, &y)) + * { + * E_Container *con; + * con = e_container_current_get(e_manager_current_get()); + * + * if (x + w > con->w) + * x -= w; + * if (y + h > con->h) + * y -= h; + * e_popup_move(popup->win, x, y); + * } + * else + * { */ - if (x + w > con->w) - x -= w; - if (y + h > con->h) - y -= h; - e_popup_move(popup->win, x, y); - } - else + switch (notification_cfg->corner) { - switch (notification_cfg->direction) - { - case DIRECTION_DOWN: - case DIRECTION_RIGHT: - dir = 1; - break; - case DIRECTION_UP: - case DIRECTION_LEFT: - dir = -1; - break; - } - - if (notification_cfg->direction == DIRECTION_DOWN || - notification_cfg->direction == DIRECTION_UP) - e_popup_move(popup->win, - notification_cfg->placement.x, - notification_cfg->placement.y - + dir * num * (h + notification_cfg->gap)); - else - e_popup_move(popup->win, - notification_cfg->placement.x - + dir * num * (w + notification_cfg->gap), - notification_cfg->placement.y); + case CORNER_TL: + e_popup_move(popup->win, + to_edge, to_edge + num * (h + gap)); + break; + case CORNER_TR: + e_popup_move(popup->win, + con->w - (w + to_edge) , + to_edge + num * (h + gap)); + break; + case CORNER_BL: + e_popup_move(popup->win, + to_edge, + (con->h - h) - (to_edge + num * (h + gap))); + break; + case CORNER_BR: + e_popup_move(popup->win, + con->w - (w + to_edge), + (con->h - h) - (to_edge + num * (h + gap))); + break; } } @@ -430,76 +434,77 @@ free(popup); } -static char * -_str_append(char *str, const char *txt, int *len, int *alloc) -{ - int txt_len = strlen(txt); +/* static char * + * _str_append(char *str, const char *txt, int *len, int *alloc) + * { + * int txt_len = strlen(txt); + * + * if (txt_len <= 0) return str; + * if ((*len + txt_len) >= *alloc) + * { + * char *str2; + * int alloc2; + * + * alloc2 = *alloc + txt_len + 128; + * str2 = realloc(str, alloc2); + * if (!str2) return str; + * *alloc = alloc2; + * str = str2; + * } + * strcpy(str + *len, txt); + * *len += txt_len; + * return str; + * } + * + * static char * + * _text_to_mkup(const char *text) + * { + * char *str = NULL; + * int str_len = 0, str_alloc = 0; + * int ch, pos = 0, pos2 = 0; + * + * if (!text) return NULL; + * for (;;) + * { + * pos = pos2; + * pos2 = evas_string_char_next_get((char *)(text), pos2, &ch); + * if ((ch <= 0) || (pos2 <= 0)) break; + * if (ch == '\n') + * str = _str_append(str, "<br>", &str_len, &str_alloc); + * else if (ch == '\t') + * str = _str_append(str, "<\t>", &str_len, &str_alloc); + * else if (ch == '<') + * str = _str_append(str, "<", &str_len, &str_alloc); + * else if (ch == '>') + * str = _str_append(str, ">", &str_len, &str_alloc); + * else if (ch == '&') + * str = _str_append(str, "&", &str_len, &str_alloc); + * else + * { + * char tstr[16]; + * + * strncpy(tstr, text + pos, pos2 - pos); + * tstr[pos2 - pos] = 0; + * str = _str_append(str, tstr, &str_len, &str_alloc); + * } + * } + * return str; + * } */ - if (txt_len <= 0) return str; - if ((*len + txt_len) >= *alloc) - { - char *str2; - int alloc2; - - alloc2 = *alloc + txt_len + 128; - str2 = realloc(str, alloc2); - if (!str2) return str; - *alloc = alloc2; - str = str2; - } - strcpy(str + *len, txt); - *len += txt_len; - return str; -} - -static char * -_text_to_mkup(const char *text) -{ - char *str = NULL; - int str_len = 0, str_alloc = 0; - int ch, pos = 0, pos2 = 0; - - if (!text) return NULL; - for (;;) - { - pos = pos2; - pos2 = evas_string_char_next_get((char *)(text), pos2, &ch); - if ((ch <= 0) || (pos2 <= 0)) break; - if (ch == '\n') - str = _str_append(str, "<br>", &str_len, &str_alloc); - else if (ch == '\t') - str = _str_append(str, "<\t>", &str_len, &str_alloc); - else if (ch == '<') - str = _str_append(str, "<", &str_len, &str_alloc); - else if (ch == '>') - str = _str_append(str, ">", &str_len, &str_alloc); - else if (ch == '&') - str = _str_append(str, "&", &str_len, &str_alloc); - else - { - char tstr[16]; - - strncpy(tstr, text + pos, pos2 - pos); - tstr[pos2 - pos] = 0; - str = _str_append(str, tstr, &str_len, &str_alloc); - } - } - return str; -} - static void _notification_format_message(Popup_Data *popup) { Evas_Object *o = popup->theme; const char *title = e_notification_summary_get(popup->notif); const char *b = e_notification_body_get(popup->notif); - char *message = _text_to_mkup(b); + edje_object_part_text_set(o, "notification.textblock.message", b); edje_object_part_text_set(o, "notification.text.title", title); - if (message) - { - edje_object_part_text_set(o, "notification.textblock.message", message); - free(message); - } + /* char *message = _text_to_mkup(b); */ + /* if (message) + * { + * edje_object_part_text_set(o, "notification.textblock.message", message); + * free(message); + * } */ } static void |
From: Enlightenment S. <no-...@en...> - 2010-06-01 00:29:05
|
Log: - fix #546 - notify module mousehover not working - update placement of popups on refresh - initial stuff for merging notifications daemon should provide 'append' capability now. though this seems to be specififed nowhere other than in notify-osd source Author: jeffdameth Date: 2010-05-31 17:23:52 -0700 (Mon, 31 May 2010) New Revision: 49364 Modified: trunk/E-MODULES-EXTRA/notification/src/e_mod_popup.c Modified: trunk/E-MODULES-EXTRA/notification/src/e_mod_popup.c =================================================================== --- trunk/E-MODULES-EXTRA/notification/src/e_mod_popup.c 2010-06-01 00:15:09 UTC (rev 49363) +++ trunk/E-MODULES-EXTRA/notification/src/e_mod_popup.c 2010-06-01 00:23:52 UTC (rev 49364) @@ -6,74 +6,80 @@ /* Popup function protos */ static Popup_Data *_notification_popup_new (E_Notification *n); static Popup_Data *_notification_popup_find (unsigned int id); +static Popup_Data *_notification_popup_merge (E_Notification *n); + static int _notification_popup_place (Popup_Data *popup, int num); static void _notification_popup_refresh (Popup_Data *popup); -static void _notification_popup_del (unsigned int id, - E_Notification_Closed_Reason reason); -static void _notification_popdown (Popup_Data *popup, - E_Notification_Closed_Reason reason); +static void _notification_popup_del (unsigned int id, + E_Notification_Closed_Reason reason); +static void _notification_popdown (Popup_Data *popup, + E_Notification_Closed_Reason reason); /* Util function protos */ static void _notification_format_message (Popup_Data *popup); /* Callbacks */ -static void _notification_theme_cb_deleted (void *data, - Evas_Object *obj, - const char *emission, - const char *source); -static void _notification_theme_cb_close (void *data, - Evas_Object *obj, - const char *emission, - const char *source); -static void _notification_theme_cb_find (void *data, - Evas_Object *obj, - const char *emission, - const char *source); +static void _notification_theme_cb_deleted (void *data, + Evas_Object *obj, + const char *emission, + const char *source); +static void _notification_theme_cb_close (void *data, + Evas_Object *obj, + const char *emission, + const char *source); +static void _notification_theme_cb_find (void *data, + Evas_Object *obj, + const char *emission, + const char *source); static int _notification_timer_cb (void *data); static int next_pos = 0; int -notification_popup_notify(E_Notification *n, - unsigned int replaces_id, - unsigned int id __UNUSED__, - const char *appname) +notification_popup_notify(E_Notification *n, + unsigned int replaces_id, + unsigned int id __UNUSED__, + const char *appname) { - int timeout; + double timeout; Popup_Data *popup = NULL; char urgency; urgency = e_notification_hint_urgency_get(n); - if (urgency == E_NOTIFICATION_URGENCY_LOW && !notification_cfg->show_low) - return 0; - else if (urgency == E_NOTIFICATION_URGENCY_NORMAL && !notification_cfg->show_normal) - return 0; - else if (urgency == E_NOTIFICATION_URGENCY_CRITICAL && !notification_cfg->show_critical) - return 0; - if (replaces_id && (popup = _notification_popup_find(replaces_id))) + switch (urgency) { + case E_NOTIFICATION_URGENCY_LOW: + if (!notification_cfg->show_low) + return 0; + break; + case E_NOTIFICATION_URGENCY_NORMAL: + if (!notification_cfg->show_normal) + return 0; + break; + case E_NOTIFICATION_URGENCY_CRITICAL: + if (!notification_cfg->show_critical) + return 0; + break; + default: + break; + } + + if (replaces_id && (popup = _notification_popup_find(replaces_id))) + { e_notification_ref(n); + if (popup->notif) - { - /* const char *body_old = e_notification_body_get(popup->notif); */ - /* const char *body_new = e_notification_body_get(n); - * char *body_final; - * int body_old_len, body_new_len; - * - * body_old_len = strlen(body_old); - * body_new_len = strlen(body_new); - * body_final = alloca(body_old_len + body_new_len + 2); - * sprintf(body_final, "%s\n%s", body_old, body_new); */ - /* e_notification_body_set(n, body_new); */ + e_notification_unref(popup->notif); - e_notification_unref(popup->notif); - } popup->notif = n; - /* edje_object_signal_emit(popup->theme, "notification,del", "notification"); */ _notification_popup_refresh(popup); - /* edje_object_signal_emit(popup->theme, "notification,new", "notification"); */ } + else if (!replaces_id) + { + if ((popup = _notification_popup_merge(n))) + _notification_popup_refresh(popup); + } if (!popup) { @@ -87,13 +93,17 @@ ecore_timer_del(popup->timer); popup->timer = NULL; } + timeout = e_notification_timeout_get(popup->notif); - if ((timeout == 0 || timeout == -1) && notification_cfg->timeout == 0.0) - return 1; + + if (timeout < 0) + timeout = notification_cfg->timeout; else - popup->timer = ecore_timer_add(timeout == -1 ? notification_cfg->timeout : (float)timeout / 1000, - _notification_timer_cb, - popup); + timeout = (double)timeout / 1000.0; + + if (timeout > 0) + popup->timer = ecore_timer_add(timeout, _notification_timer_cb, popup); + return 1; } @@ -118,6 +128,87 @@ } static Popup_Data * +_notification_popup_merge(E_Notification *n) +{ + Eina_List *l; + Popup_Data *popup; + const char *str1, *str2; + const char *body_old; + const char *body_new; + char *body_final; + int body_old_len, body_new_len; + + str1 = e_notification_app_name_get(n); + /* printf("merge %s\n", str1); */ + + if (!str1) + return NULL; + + EINA_LIST_FOREACH (notification_cfg->popups, l, popup) + { + if (!popup->notif) + continue; + + if (!(str2 = e_notification_app_name_get(popup->notif))) + continue; + + if (!strcmp(str1, str2)) + break; + } + + if (!popup) + { + /* printf("- no poup to merge\n"); */ + return NULL; + } + + str1 = e_notification_summary_get(n); + str2 = e_notification_summary_get(popup->notif); + + + /* if ((str1 && !str2) || (!str1 && str2)) */ + if (!(!(str1) == !(str2))) + { + /* printf("1- summary doesn match, %s, %s\n", str1, str2); */ + return NULL; + } + + if (str1 && str2 && strcmp(str1, str2)) + { + /* printf("- summary doesn match, %s, %s\n", str1, str2); */ + return NULL; + } + + /* TODO if actions check if they are equal... */ + if (!(e_notification_actions_get(popup->notif)) != + (!(e_notification_actions_get(n)))) + { + /* printf("- actions dont match\n"); */ + return NULL; + } + + /* TODO p->n is not fallback alert..*/ + /* TODO both allow merging */ + + body_old = e_notification_body_get(popup->notif); + body_new = e_notification_body_get(n); + + body_old_len = strlen(body_old); + body_new_len = strlen(body_new); + body_final = alloca(body_old_len + body_new_len + 5); + sprintf(body_final, "%s<br>%s", body_old, body_new); + /* printf("set body %s\n", body_final); */ + + e_notification_body_set(n, body_final); + + e_notification_unref(popup->notif); + popup->notif = n; + e_notification_ref(popup->notif); + + return popup; +} + +static Popup_Data * _notification_popup_new(E_Notification *n) { E_Container *con; @@ -172,26 +263,14 @@ { int x, y, w, h, dir = 0; E_Container *con; - + con = e_container_current_get(e_manager_current_get()); evas_object_geometry_get(popup->theme, NULL, NULL, &w, &h); int gap = 10; int to_edge = 15; - - /* if (e_notification_hint_xy_get(popup->notif, &x, &y)) - * { - * E_Container *con; - * con = e_container_current_get(e_manager_current_get()); - * - * if (x + w > con->w) - * x -= w; - * if (y + h > con->h) - * y -= h; - * e_popup_move(popup->win, x, y); - * } - * else - * { */ + /* XXX for now ignore placement requests */ + switch (notification_cfg->corner) { case CORNER_TL: @@ -214,11 +293,26 @@ (con->h - h) - (to_edge + pos)); break; } - + return pos + h + gap; } static void +_notification_popups_place() +{ + Popup_Data *popup; + Eina_List *l, *next; + int pos = 0; + + EINA_LIST_FOREACH(notification_cfg->popups, l, popup) + { + pos = _notification_popup_place(popup, pos); + } + + next_pos = pos; +} + +static void _notification_popup_refresh(Popup_Data *popup) { const char *icon_path; @@ -231,7 +325,7 @@ popup->app_name = e_notification_app_name_get(popup->notif); - if (popup->app_icon) + if (popup->app_icon) { edje_object_part_unswallow(popup->theme, popup->app_icon); evas_object_del(popup->app_icon); @@ -245,7 +339,7 @@ errno = 0; width = strtol(app_icon_max, &endptr, 10); - if ((errno != 0 && width == 0) || endptr == app_icon_max) + if ((errno != 0 && width == 0) || endptr == app_icon_max) { width = 80; height = 80; @@ -336,7 +430,7 @@ edje_extern_object_min_size_set(popup->app_icon, w, h); edje_extern_object_max_size_set(popup->app_icon, w, h); } - + edje_object_calc_force(popup->theme); edje_object_part_swallow(popup->theme, "notification.swallow.app_icon", popup->app_icon); edje_object_signal_emit(popup->theme, "notification,icon", "notification"); @@ -349,6 +443,8 @@ edje_object_size_min_calc(popup->theme, &w, &h); e_popup_resize(popup->win, w, h); evas_object_resize(popup->theme, w, h); + + _notification_popups_place(); } static Popup_Data * @@ -370,7 +466,7 @@ Popup_Data *popup; Eina_List *l, *next; int pos = 0; - + EINA_LIST_FOREACH(notification_cfg->popups, l, popup) { if (e_notification_id_get(popup->notif) == id) @@ -396,8 +492,8 @@ evas_object_del(popup->theme); e_object_del(E_OBJECT(popup->win)); e_notification_closed_set(popup->notif, 1); - e_notification_daemon_signal_notification_closed(notification_cfg->daemon, - e_notification_id_get(popup->notif), + e_notification_daemon_signal_notification_closed(notification_cfg->daemon, + e_notification_id_get(popup->notif), reason); e_notification_unref(popup->notif); free(popup); @@ -413,10 +509,10 @@ } static void -_notification_theme_cb_deleted(void *data, - Evas_Object *obj __UNUSED__, - const char *emission __UNUSED__, - const char *source __UNUSED__) +_notification_theme_cb_deleted(void *data, + Evas_Object *obj __UNUSED__, + const char *emission __UNUSED__, + const char *source __UNUSED__) { Popup_Data *popup = data; _notification_popup_refresh(popup); @@ -424,21 +520,21 @@ } static void -_notification_theme_cb_close(void *data, - Evas_Object *obj __UNUSED__, - const char *emission __UNUSED__, - const char *source __UNUSED__) +_notification_theme_cb_close(void *data, + Evas_Object *obj __UNUSED__, + const char *emission __UNUSED__, + const char *source __UNUSED__) { Popup_Data *popup = data; - _notification_popup_del(e_notification_id_get(popup->notif), + _notification_popup_del(e_notification_id_get(popup->notif), E_NOTIFICATION_CLOSED_DISMISSED); } static void -_notification_theme_cb_find(void *data, - Evas_Object *obj __UNUSED__, - const char *emission __UNUSED__, - const char *source __UNUSED__) +_notification_theme_cb_find(void *data, + Evas_Object *obj __UNUSED__, + const char *emission __UNUSED__, + const char *source __UNUSED__) { Popup_Data *popup = data; Eina_List *l; @@ -473,8 +569,7 @@ _notification_timer_cb(void *data) { Popup_Data *popup = data; - _notification_popup_del(e_notification_id_get(popup->notif), + _notification_popup_del(e_notification_id_get(popup->notif), E_NOTIFICATION_CLOSED_EXPIRED); return 0; } - |
From: Enlightenment S. <no-...@en...> - 2011-04-16 09:40:49
|
Log: e-modules/notification: also use image_data hint for notification icon Author: jeffdameth Date: 2011-04-16 02:40:42 -0700 (Sat, 16 Apr 2011) New Revision: 58697 Trac: http://trac.enlightenment.org/e/changeset/58697 Modified: trunk/E-MODULES-EXTRA/notification/src/e_mod_popup.c Modified: trunk/E-MODULES-EXTRA/notification/src/e_mod_popup.c =================================================================== --- trunk/E-MODULES-EXTRA/notification/src/e_mod_popup.c 2011-04-15 22:04:59 UTC (rev 58696) +++ trunk/E-MODULES-EXTRA/notification/src/e_mod_popup.c 2011-04-16 09:40:42 UTC (rev 58697) @@ -400,6 +400,12 @@ evas_object_image_alpha_set(popup->app_icon, 1); evas_object_image_size_get(popup->app_icon, &w, &h); } + else if ((img = e_notification_hint_image_data_get(popup->notif))) + { + popup->app_icon = e_notification_image_evas_object_add(popup->e, img); + evas_object_image_alpha_set(popup->app_icon, 1); + evas_object_image_size_get(popup->app_icon, &w, &h); + } if (!popup->app_icon) { |