Enlightenment CVS committal

Author  : urandom
Project : e_modules
Module  : forecasts

Dir     : e_modules/forecasts


Modified Files:
        e_mod_main.c e_mod_main.h 


Log Message:
use the gadcon popup

===================================================================
RCS file: /cvs/e/e_modules/forecasts/e_mod_main.c,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -3 -r1.8 -r1.9
--- e_mod_main.c        31 Mar 2007 09:06:30 -0000      1.8
+++ e_mod_main.c        20 Aug 2007 18:54:46 -0000      1.9
@@ -86,7 +86,7 @@
    const char *area;
    int bufsize, cursize;
 
-   Popup *popup;
+   E_Gadcon_Popup *popup;
 };
 
 struct _Forecasts
@@ -127,9 +127,9 @@
 static void _cb_mouse_down(void *data, Evas *e, Evas_Object *obj, void 
*event_info);
 static void _cb_mouse_in(void *data, Evas *e, Evas_Object *obj, void 
*event_info);
 static void _cb_mouse_out(void *data, Evas *e, Evas_Object *obj, void 
*event_info);
-static Evas_Object * _forecasts_popup_icon_create(Popup *popup, int code);
+static Evas_Object * _forecasts_popup_icon_create(Evas *evas, int code);
 static void _forecasts_popup_destroy(Instance *inst);
-static void _forecasts_popup_toggle_pinned_state(Popup *popup);
+static void _forecasts_popup_resize(Evas_Object *obj, int *w, int *h);
 
 /* Gadcon Functions */
 static E_Gadcon_Client *
@@ -946,20 +946,9 @@
    int w, h;
 
    if (inst->popup) _forecasts_popup_destroy(inst);
-   inst->popup = E_NEW(Popup, 1);
-   inst->popup->win = 
e_popup_new(e_zone_current_get(e_container_current_get(e_manager_current_get())),
 0, 0, 0, 0);
-   e_popup_layer_set(inst->popup->win, 999);
-   evas = inst->popup->win->evas;
-   o = edje_object_add(evas);
-   snprintf(buf, sizeof(buf), "%s/forecasts.edj",
-        e_module_dir_get(forecasts_config->module));
-   if (!e_theme_edje_object_set(o, "base/theme/modules/forecasts",
-           "modules/forecasts/popup"))
-     edje_object_file_set(o, buf, "modules/forecasts/popup");
-   evas_object_show(o);
-   inst->popup->o_bg = o;
-   evas_object_move(inst->popup->o_bg, 0, 0);
+   inst->popup = e_gadcon_popup_new(inst->gcc, _forecasts_popup_resize);
 
+   evas = inst->popup->win->evas;
    o = e_widget_list_add(evas, 0, 0);
    snprintf(buf, sizeof(buf), "%s", inst->location);
    of = e_widget_frametable_add(evas, buf, 0);
@@ -968,7 +957,8 @@
    ob = e_widget_label_add(evas, buf);
    e_widget_frametable_object_append(of, ob, 0, row, 2, 1, 0, 0, 1, 0);
 
-   oi = _forecasts_popup_icon_create(inst->popup, inst->condition.code);
+   oi = _forecasts_popup_icon_create(inst->popup->win->evas,
+        inst->condition.code);
    edje_object_size_max_get(oi, &w, &h);
    DEBUG("Icon size %dx%d", w, h);
    if (w > 160) w = 160;       /* For now there is a limit to how big the icon 
should be */
@@ -1045,7 +1035,8 @@
        e_widget_frametable_object_append(of, ob, 1, row, 1, 1, 1, 0, 1, 0);
 
        ob = e_widget_image_add_from_object(evas,
-             _forecasts_popup_icon_create(inst->popup, 
inst->forecast[i].code), 0, 0);
+             _forecasts_popup_icon_create(inst->popup->win->evas,
+                inst->forecast[i].code), 0, 0);
        e_widget_frametable_object_append(of, ob, 2, row, 1, 2, 0, 0, 0, 0);
 
        ob = e_widget_label_add(evas, D_("Low"));
@@ -1057,18 +1048,11 @@
    }
 
    e_widget_list_object_append(o, ol, 1, 1, 0.5);
-   e_popup_edje_bg_object_set(inst->popup->win, inst->popup->o_bg);
-
-   e_widget_min_size_get(o, &w, &h);
-   edje_extern_object_min_size_set(o, w, h);
-   edje_object_part_swallow(inst->popup->o_bg, "e.swallow.content", o);
-   edje_object_size_min_calc(inst->popup->o_bg, &inst->popup->w, 
&inst->popup->h);
-   DEBUG("Popup size %dx%d", inst->popup->w, inst->popup->h);
-   evas_object_resize(inst->popup->o_bg, inst->popup->w, inst->popup->h);
+   e_gadcon_popup_content_set(inst->popup, o);
 }
 
 static Evas_Object *
-_forecasts_popup_icon_create(Popup *popup, int code)
+_forecasts_popup_icon_create(Evas *evas, int code)
 {
    char buf[4096];
    char m[4096];
@@ -1076,7 +1060,7 @@
 
    snprintf(m, sizeof(m), "%s/forecasts.edj",
         e_module_dir_get(forecasts_config->module));
-   o = edje_object_add(popup->win->evas);
+   o = edje_object_add(evas);
    snprintf(buf, sizeof(buf), "modules/forecasts/icons/%d", code);
    if (!e_theme_edje_object_set(o, "base/theme/modules/forecasts/icons", buf))
      edje_object_file_set(o, m, buf);
@@ -1088,23 +1072,7 @@
 _forecasts_popup_destroy(Instance *inst)
 {
    if (!inst->popup) return;
-   if (inst->popup->pinned) _forecasts_popup_toggle_pinned_state(inst->popup);
-   evas_object_del(inst->popup->o_bg);
-   e_object_del(E_OBJECT(inst->popup->win));
-   E_FREE(inst->popup);
-}
-
-static void
-_forecasts_popup_toggle_pinned_state(Popup *popup)
-{
-   if (!popup) return;
-   if (popup->pinned) {
-       popup->pinned = 0;
-       edje_object_signal_emit(popup->o_bg, "e,state,unpinned", "e");
-   } else {
-       popup->pinned = 1;
-       edje_object_signal_emit(popup->o_bg, "e,state,pinned", "e");
-   }
+   e_object_del(E_OBJECT(inst->popup));
 }
 
 static void 
@@ -1115,9 +1083,10 @@
 
    inst = data;
    ev = event_info;
-   if (ev->button == 1) {
-       _forecasts_popup_toggle_pinned_state(inst->popup);
-   }
+   if (ev->button == 1)
+     {
+       e_gadcon_popup_toggle_pinned(inst->popup);
+     }
 }
 
 static void 
@@ -1127,68 +1096,8 @@
    int ww, wh;
    Evas_Coord gx, gy, gw, gh, zw, zh, px, py;
    
-   inst = data;
-   if (!inst->popup) return;
-   e_popup_show(inst->popup->win);
-   evas_object_show(inst->popup->o_bg);
-   edje_object_size_min_calc(inst->popup->o_bg, &ww, &wh);
-   /* Apply the golden ratio to the popup */
-   if ((double) ww / wh > GOLDEN_RATIO) {
-       wh = ww / GOLDEN_RATIO;
-   } else if ((double) ww / wh < GOLDEN_RATIO - (double) 1) {
-       ww = wh * (GOLDEN_RATIO - (double) 1);
-   }
-
-   evas_object_resize(inst->popup->o_bg, ww, wh);
-   inst->popup->w = ww;
-   inst->popup->h = wh;
-
-   /* Popup positioning */
-   e_gadcon_client_geometry_get(inst->gcc, &gx, &gy, &gw, &gh);
-   zw = inst->gcc->gadcon->zone->w;
-   zh = inst->gcc->gadcon->zone->h;
-   DEBUG("Zone size: %dx%d", zw, zh);
-   DEBUG("Object geometry: %dx%d, %dx%d", gx, gy, gw, gh);
-   switch (inst->gcc->gadcon->orient)
-     {
-      case E_GADCON_ORIENT_CORNER_RT:
-      case E_GADCON_ORIENT_CORNER_RB:
-      case E_GADCON_ORIENT_RIGHT:
-        px = gx - inst->popup->w;
-        py = gy;
-        if (py + inst->popup->h >= zh)
-          py = gy + gh - inst->popup->h;
-        break;
-      case E_GADCON_ORIENT_LEFT:
-      case E_GADCON_ORIENT_CORNER_LT:
-      case E_GADCON_ORIENT_CORNER_LB:
-        px = gx + gw;
-        py = gy;
-        if (py + inst->popup->h >= zh)
-          py = gy + gh - inst->popup->h;
-        break;
-        break;
-      case E_GADCON_ORIENT_TOP:
-      case E_GADCON_ORIENT_CORNER_TL:
-      case E_GADCON_ORIENT_CORNER_TR:
-        py = gy + gh;
-        px = gx;
-        if (px + inst->popup->w >= zw)
-          px = gx + gw - inst->popup->w;
-        break;
-      case E_GADCON_ORIENT_BOTTOM:
-      case E_GADCON_ORIENT_CORNER_BL:
-      case E_GADCON_ORIENT_CORNER_BR:
-        py = gy - inst->popup->h;
-        px = gx;
-        if (px + inst->popup->w >= zw)
-          px = gx + gw - inst->popup->w;
-        break;
-      default:
-        e_popup_move_resize(inst->popup->win, 50, 50, inst->popup->w, 
inst->popup->h);
-        return;
-     }
-   e_popup_move_resize(inst->popup->win, px, py, inst->popup->w, 
inst->popup->h);
+   if (!(inst = data)) return;
+   e_gadcon_popup_show(inst->popup);
 }
 
 static void 
@@ -1196,8 +1105,19 @@
 {
    Instance *inst;
    
-   inst = data;
-   if (!inst->popup) return;
-   if (inst->popup->pinned) return;
-   e_popup_hide(inst->popup->win);
+   if (!(inst = data)) return;
+   e_gadcon_popup_hide(inst->popup);
+}
+
+static void
+_forecasts_popup_resize(Evas_Object *obj, int *w, int *h)
+{
+   if (!(*w)) *w = 0;
+   if (!(*h)) *h = 0;
+   /* Apply the golden ratio to the popup */
+   if ((double) *w / *h > GOLDEN_RATIO) {
+       *h = *w / GOLDEN_RATIO;
+   } else if ((double) *w / *h < GOLDEN_RATIO - (double) 1) {
+       *w = *h * (GOLDEN_RATIO - (double) 1);
+   }
 }
===================================================================
RCS file: /cvs/e/e_modules/forecasts/e_mod_main.h,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -3 -r1.3 -r1.4
--- e_mod_main.h        3 Mar 2007 18:29:20 -0000       1.3
+++ e_mod_main.h        20 Aug 2007 18:54:46 -0000      1.4
@@ -29,16 +29,6 @@
    int show_text;
 };
 
-struct _Popup
-{
-   E_Popup *win;
-
-   int w, h;
-   int pinned : 1;
-
-   Evas_Object *o_bg;
-};
-
 EAPI extern E_Module_Api e_modapi;
 
 EAPI void *e_modapi_init(E_Module *m);



-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >>  http://get.splunk.com/
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to