Enlightenment CVS committal

Author  : sebastid
Project : e17
Module  : apps/e

Dir     : e17/apps/e/src/modules/pager


Modified Files:
        e_mod_main.c e_mod_main.h 


Log Message:
Merge desktopname into pager

===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/modules/pager/e_mod_main.c,v
retrieving revision 1.111
retrieving revision 1.112
diff -u -3 -r1.111 -r1.112
--- e_mod_main.c        6 Sep 2005 01:11:41 -0000       1.111
+++ e_mod_main.c        6 Sep 2005 05:19:15 -0000       1.112
@@ -14,7 +14,8 @@
 static void        _pager_free(Pager *pager);
 static void        _pager_config_menu_new(Pager *pager);
 
-static Pager_Face *_pager_face_new(Pager *pager, E_Zone *zone);
+static Pager_Face *_pager_face_new(Pager *pager, E_Zone *zone, Evas *evas);
+static void        _pager_face_events_init(Pager_Face *face);
 static void        _pager_face_free(Pager_Face *face);
 static void        _pager_face_menu_new(Pager_Face *face);
 static void        _pager_face_enable(Pager_Face *face);
@@ -74,6 +75,13 @@
 static void        _pager_face_cb_deskname_left(void *data, E_Menu *m, 
E_Menu_Item *mi);
 static void        _pager_face_cb_deskname_right(void *data, E_Menu *m, 
E_Menu_Item *mi);
 static void        _pager_face_deskname_position_change(Pager_Face *face);
+static int         _pager_popup_cb_timeout(void *data);
+
+static void        _pager_menu_cb_speed_very_slow(void *data, E_Menu *m, 
E_Menu_Item *mi);
+static void        _pager_menu_cb_speed_slow(void *data, E_Menu *m, 
E_Menu_Item *mi);
+static void        _pager_menu_cb_speed_normal(void *data, E_Menu *m, 
E_Menu_Item *mi);
+static void        _pager_menu_cb_speed_fast(void *data, E_Menu *m, 
E_Menu_Item *mi);
+static void        _pager_menu_cb_speed_very_fast(void *data, E_Menu *m, 
E_Menu_Item *mi);
 
 static int         _pager_count;
 
@@ -185,11 +193,14 @@
 #define D _conf_edd
    E_CONFIG_LIST(D, T, faces, _conf_face_edd);
    E_CONFIG_VAL(D, T, deskname_pos, UINT);
+   E_CONFIG_VAL(D, T, speed, UINT);
 
    pager->conf = e_config_domain_load("module.pager", _conf_edd);
    if (!pager->conf)
      {
        pager->conf = E_NEW(Config, 1);
+       pager->conf->deskname_pos = PAGER_DESKNAME_NONE;
+       pager->conf->speed = 12;
      }
 
    _pager_config_menu_new(pager);
@@ -215,10 +226,11 @@
               {
                  zone = l3->data;
 
-                 face = _pager_face_new(pager, zone);
+                 face = _pager_face_new(pager, zone, zone->container->bg_evas);
                  if (face)
                    {
                       pager->faces = evas_list_append(pager->faces, face);
+                      _pager_face_events_init(face);
 
                       /* Config */
                       if (!cl)
@@ -269,6 +281,8 @@
      e_object_del(E_OBJECT(l->data));
    evas_list_free(pager->menus);
    e_object_del(E_OBJECT(pager->config_menu));
+   e_object_del(E_OBJECT(pager->config_menu_deskname));
+   e_object_del(E_OBJECT(pager->config_menu_speed));
 
    evas_list_free(pager->conf->faces);
    free(pager->conf);
@@ -330,14 +344,57 @@
    e_menu_item_callback_set(mi, _pager_face_cb_deskname_right, pager);
    */
 
+   mn = e_menu_new();
+   pager->config_menu_speed = mn;
+
+   /* Desktopname speed */
+   mi = e_menu_item_new(mn);
+   e_menu_item_label_set(mi, _("Very Slow"));
+   e_menu_item_radio_set(mi, 1);
+   e_menu_item_radio_group_set(mi, 1);
+   if (pager->conf->speed == 60) e_menu_item_toggle_set(mi, 1);
+   e_menu_item_callback_set(mi, _pager_menu_cb_speed_very_slow, pager);
+   
+   mi = e_menu_item_new(mn);
+   e_menu_item_label_set(mi, _("Slow"));
+   e_menu_item_radio_set(mi, 1);
+   e_menu_item_radio_group_set(mi, 1);
+   if (pager->conf->speed == 40) e_menu_item_toggle_set(mi, 1);
+   e_menu_item_callback_set(mi, _pager_menu_cb_speed_slow, pager);
+
+   mi = e_menu_item_new(mn);
+   e_menu_item_label_set(mi, _("Normal"));
+   e_menu_item_radio_set(mi, 1);
+   e_menu_item_radio_group_set(mi, 1);
+   if (pager->conf->speed == 12) e_menu_item_toggle_set(mi, 1);
+   e_menu_item_callback_set(mi, _pager_menu_cb_speed_normal, pager);
+
+   mi = e_menu_item_new(mn);
+   e_menu_item_label_set(mi, _("Fast"));
+   e_menu_item_radio_set(mi, 1);
+   e_menu_item_radio_group_set(mi, 1);
+   if (pager->conf->speed == 7) e_menu_item_toggle_set(mi, 1);
+   e_menu_item_callback_set(mi, _pager_menu_cb_speed_fast, pager);
+   
+   mi = e_menu_item_new(mn);
+   e_menu_item_label_set(mi, _("Very Fast"));
+   e_menu_item_radio_set(mi, 1);
+   e_menu_item_radio_group_set(mi, 1);
+   if (pager->conf->speed == 3) e_menu_item_toggle_set(mi, 1);
+   e_menu_item_callback_set(mi, _pager_menu_cb_speed_very_fast, pager);
+
    /* Submenus */
    mi = e_menu_item_new(pager->config_menu);
    e_menu_item_label_set(mi, _("Desktop Name"));
    e_menu_item_submenu_set(mi, pager->config_menu_deskname);
+
+   mi = e_menu_item_new(pager->config_menu);
+   e_menu_item_label_set(mi, _("Desktop Speed"));
+   e_menu_item_submenu_set(mi, pager->config_menu_speed);
 }
 
 static Pager_Face *
-_pager_face_new(Pager *pager, E_Zone *zone)
+_pager_face_new(Pager *pager, E_Zone *zone, Evas *evas)
 {
    Pager_Face  *face;
    Evas_Object *o;
@@ -349,57 +406,7 @@
    face->pager = pager;
 
    /* store what evas we live in */
-   face->evas = zone->container->bg_evas;
-   
-   /* set up event handles for when windows change and desktops */
-   face->ev_handler_border_resize =
-      ecore_event_handler_add(E_EVENT_BORDER_RESIZE,
-                             _pager_face_cb_event_border_resize, face);
-   face->ev_handler_border_move =
-      ecore_event_handler_add(E_EVENT_BORDER_MOVE,
-                             _pager_face_cb_event_border_move, face);
-   face->ev_handler_border_add =
-      ecore_event_handler_add(E_EVENT_BORDER_ADD,
-                             _pager_face_cb_event_border_add, face);
-   face->ev_handler_border_remove =
-      ecore_event_handler_add(E_EVENT_BORDER_REMOVE,
-                             _pager_face_cb_event_border_remove, face);
-   face->ev_handler_border_iconify =
-      ecore_event_handler_add(E_EVENT_BORDER_ICONIFY,
-                             _pager_face_cb_event_border_iconify, face);
-   face->ev_handler_border_uniconify =
-      ecore_event_handler_add(E_EVENT_BORDER_UNICONIFY,
-                             _pager_face_cb_event_border_uniconify, face);
-   face->ev_handler_border_stick =
-      ecore_event_handler_add(E_EVENT_BORDER_STICK,
-                             _pager_face_cb_event_border_stick, face);
-   face->ev_handler_border_unstick =
-      ecore_event_handler_add(E_EVENT_BORDER_UNSTICK,
-                             _pager_face_cb_event_border_unstick, face);
-   face->ev_handler_border_desk_set =
-      ecore_event_handler_add(E_EVENT_BORDER_DESK_SET,
-                             _pager_face_cb_event_border_desk_set, face);
-   face->ev_handler_border_raise =
-      ecore_event_handler_add(E_EVENT_BORDER_RAISE,
-                             _pager_face_cb_event_border_raise, face);
-   face->ev_handler_border_lower =
-      ecore_event_handler_add(E_EVENT_BORDER_LOWER,
-                             _pager_face_cb_event_border_lower, face);
-   face->ev_handler_border_icon_change =
-      ecore_event_handler_add(E_EVENT_BORDER_ICON_CHANGE,
-                             _pager_face_cb_event_border_icon_change, face);
-   face->ev_handler_zone_desk_count_set =
-      ecore_event_handler_add(E_EVENT_ZONE_DESK_COUNT_SET,
-                             _pager_face_cb_event_zone_desk_count_set, face);
-   face->ev_handler_desk_show =
-      ecore_event_handler_add(E_EVENT_DESK_SHOW,
-                             _pager_face_cb_event_desk_show, face);
-   face->ev_handler_desk_name_change =
-      ecore_event_handler_add(E_EVENT_DESK_NAME_CHANGE,
-                             _pager_face_cb_event_desk_name_change, face);
-   face->ev_handler_container_resize =
-      ecore_event_handler_add(E_EVENT_CONTAINER_RESIZE,
-                             _pager_face_cb_event_container_resize, face);
+   face->evas = evas;
 
    /* the bg */
    o = edje_object_add(face->evas);
@@ -453,6 +460,60 @@
    return face;
 }
 
+static void
+_pager_face_events_init(Pager_Face *face)
+{
+   /* set up event handles for when windows change and desktops */
+   face->ev_handler_border_resize =
+      ecore_event_handler_add(E_EVENT_BORDER_RESIZE,
+                             _pager_face_cb_event_border_resize, face);
+   face->ev_handler_border_move =
+      ecore_event_handler_add(E_EVENT_BORDER_MOVE,
+                             _pager_face_cb_event_border_move, face);
+   face->ev_handler_border_add =
+      ecore_event_handler_add(E_EVENT_BORDER_ADD,
+                             _pager_face_cb_event_border_add, face);
+   face->ev_handler_border_remove =
+      ecore_event_handler_add(E_EVENT_BORDER_REMOVE,
+                             _pager_face_cb_event_border_remove, face);
+   face->ev_handler_border_iconify =
+      ecore_event_handler_add(E_EVENT_BORDER_ICONIFY,
+                             _pager_face_cb_event_border_iconify, face);
+   face->ev_handler_border_uniconify =
+      ecore_event_handler_add(E_EVENT_BORDER_UNICONIFY,
+                             _pager_face_cb_event_border_uniconify, face);
+   face->ev_handler_border_stick =
+      ecore_event_handler_add(E_EVENT_BORDER_STICK,
+                             _pager_face_cb_event_border_stick, face);
+   face->ev_handler_border_unstick =
+      ecore_event_handler_add(E_EVENT_BORDER_UNSTICK,
+                             _pager_face_cb_event_border_unstick, face);
+   face->ev_handler_border_desk_set =
+      ecore_event_handler_add(E_EVENT_BORDER_DESK_SET,
+                             _pager_face_cb_event_border_desk_set, face);
+   face->ev_handler_border_raise =
+      ecore_event_handler_add(E_EVENT_BORDER_RAISE,
+                             _pager_face_cb_event_border_raise, face);
+   face->ev_handler_border_lower =
+      ecore_event_handler_add(E_EVENT_BORDER_LOWER,
+                             _pager_face_cb_event_border_lower, face);
+   face->ev_handler_border_icon_change =
+      ecore_event_handler_add(E_EVENT_BORDER_ICON_CHANGE,
+                             _pager_face_cb_event_border_icon_change, face);
+   face->ev_handler_zone_desk_count_set =
+      ecore_event_handler_add(E_EVENT_ZONE_DESK_COUNT_SET,
+                             _pager_face_cb_event_zone_desk_count_set, face);
+   face->ev_handler_desk_show =
+      ecore_event_handler_add(E_EVENT_DESK_SHOW,
+                             _pager_face_cb_event_desk_show, face);
+   face->ev_handler_desk_name_change =
+      ecore_event_handler_add(E_EVENT_DESK_NAME_CHANGE,
+                             _pager_face_cb_event_desk_name_change, face);
+   face->ev_handler_container_resize =
+      ecore_event_handler_add(E_EVENT_CONTAINER_RESIZE,
+                             _pager_face_cb_event_container_resize, face);
+}
+
 void
 _pager_face_free(Pager_Face *face)
 {
@@ -464,24 +525,41 @@
    e_drop_handler_del(face->drop_handler);
 
    _pager_face_zone_unset(face);
-   ecore_event_handler_del(face->ev_handler_border_resize);
-   ecore_event_handler_del(face->ev_handler_border_move);
-   ecore_event_handler_del(face->ev_handler_border_add);
-   ecore_event_handler_del(face->ev_handler_border_remove);
-   ecore_event_handler_del(face->ev_handler_border_iconify);
-   ecore_event_handler_del(face->ev_handler_border_uniconify);
-   ecore_event_handler_del(face->ev_handler_border_stick);
-   ecore_event_handler_del(face->ev_handler_border_unstick);
-   ecore_event_handler_del(face->ev_handler_border_desk_set);
-   ecore_event_handler_del(face->ev_handler_border_raise);
-   ecore_event_handler_del(face->ev_handler_border_lower);
-   ecore_event_handler_del(face->ev_handler_border_icon_change);
-   ecore_event_handler_del(face->ev_handler_zone_desk_count_set);
-   ecore_event_handler_del(face->ev_handler_desk_show);
-   ecore_event_handler_del(face->ev_handler_desk_name_change);
-   ecore_event_handler_del(face->ev_handler_container_resize);
+   if (face->ev_handler_border_resize)
+     ecore_event_handler_del(face->ev_handler_border_resize);
+   if (face->ev_handler_border_move)
+     ecore_event_handler_del(face->ev_handler_border_move);
+   if (face->ev_handler_border_add)
+     ecore_event_handler_del(face->ev_handler_border_add);
+   if (face->ev_handler_border_remove)
+     ecore_event_handler_del(face->ev_handler_border_remove);
+   if (face->ev_handler_border_iconify)
+     ecore_event_handler_del(face->ev_handler_border_iconify);
+   if (face->ev_handler_border_uniconify)
+     ecore_event_handler_del(face->ev_handler_border_uniconify);
+   if (face->ev_handler_border_stick)
+     ecore_event_handler_del(face->ev_handler_border_stick);
+   if (face->ev_handler_border_unstick)
+     ecore_event_handler_del(face->ev_handler_border_unstick);
+   if (face->ev_handler_border_desk_set)
+     ecore_event_handler_del(face->ev_handler_border_desk_set);
+   if (face->ev_handler_border_raise)
+     ecore_event_handler_del(face->ev_handler_border_raise);
+   if (face->ev_handler_border_lower)
+     ecore_event_handler_del(face->ev_handler_border_lower);
+   if (face->ev_handler_border_icon_change)
+     ecore_event_handler_del(face->ev_handler_border_icon_change);
+   if (face->ev_handler_zone_desk_count_set)
+     ecore_event_handler_del(face->ev_handler_zone_desk_count_set);
+   if (face->ev_handler_desk_show)
+     ecore_event_handler_del(face->ev_handler_desk_show);
+   if (face->ev_handler_desk_name_change)
+     ecore_event_handler_del(face->ev_handler_desk_name_change);
+   if (face->ev_handler_container_resize)
+     ecore_event_handler_del(face->ev_handler_container_resize);
 
-   e_object_del(E_OBJECT(face->menu));
+   if (face->menu)
+     e_object_del(E_OBJECT(face->menu));
 
    free(face->conf);
    free(face);
@@ -513,6 +591,10 @@
    mi = e_menu_item_new(mn);
    e_menu_item_label_set(mi, _("Desktop Name"));
    e_menu_item_submenu_set(mi, face->pager->config_menu_deskname);
+
+   mi = e_menu_item_new(mn);
+   e_menu_item_label_set(mi, _("Desktop Speed"));
+   e_menu_item_submenu_set(mi, face->pager->config_menu_speed);
 }
 
 static void
@@ -1303,12 +1385,69 @@
    face = data;
    ev = event;
    if (face->zone != ev->desk->zone) return 1;
+
    desk = _pager_face_desk_find(face, ev->desk);
-   if (desk) _pager_face_desk_select(desk);
+   if (desk)
+     {
+       Pager_Popup *pp;
+       Evas_Coord   w, h;
+       char         buf[1024];
+
+       _pager_face_desk_select(desk);
+
+       pp = E_NEW(Pager_Popup, 1);
+       if (!pp) return 1;
+
+       /* Show popup */
+       pp->popup = e_popup_new(face->zone, 0, 0, 1, 1);
+       if (!pp->popup)
+         {
+            free(pp);
+            return 1;
+         }
+       e_popup_layer_set(pp->popup, 999);
+
+       /* FIXME, this doesn't resize nicely when the name is shown! */
+       evas_object_geometry_get(face->pager_object, NULL, NULL, &w, &h);
+       w *= 3;
+       h *= 3;
+
+       pp->face = _pager_face_new(face->pager, face->zone, pp->popup->evas);
+       evas_object_move(pp->face->pager_object, 0, 0);
+       evas_object_resize(pp->face->pager_object, w, h);
+
+       snprintf(buf, sizeof(buf), desk->desk->name);
+       edje_object_part_text_set(pp->face->pager_object, "desktop_name", buf);
+       edje_object_signal_emit(pp->face->pager_object, "desktop_name,top", "");
+
+       e_popup_edje_bg_object_set(pp->popup, pp->face->pager_object);
+       e_popup_move_resize(pp->popup,
+                           pp->popup->zone->x + ((pp->popup->zone->w - w) / 2),
+                           pp->popup->zone->y + ((pp->popup->zone->h - h) / 2),
+                           w, h);
+       e_popup_show(pp->popup);
+
+       ecore_timer_add(face->pager->conf->speed / 10.0, 
_pager_popup_cb_timeout, pp);
+     }
+
    return 1;
 }
 
 static int
+_pager_popup_cb_timeout(void *data)
+{
+   Pager_Popup *pp;
+
+   pp = data;
+
+   pp->face->pager->faces = evas_list_remove(pp->face->pager->faces, pp->face);
+   _pager_face_free(pp->face);
+   e_object_del(E_OBJECT(pp->popup));
+   free(pp);
+
+   return 0;
+} 
+static int
 _pager_face_cb_event_desk_name_change(void *data, int type, void *event)
 {
    Pager_Face        *face;
@@ -1431,17 +1570,16 @@
    ev = event_info;
    desk = data;
 
-   for(l = desk->face->desks; l; l = l->next)
+   for (l = desk->face->desks; l; l = l->next)
      {
        Pager_Desk *pd;
        pd = l->data;
        if (pd->current)
          {
-          edje_object_part_text_set(pd->face->pager_object, "desktop_name", 
pd->desk->name);
-          break;
+            edje_object_part_text_set(pd->face->pager_object, "desktop_name", 
pd->desk->name);
+            break;
          }
      }
-
 }
 
 static void
@@ -1452,7 +1590,7 @@
    
    ev = event_info;
    pd = data;
-   if (ev->button == 3)
+   if ((ev->button == 3) && (pd->face->menu))
      {
        e_menu_activate_mouse(pd->face->menu, pd->face->zone,
                              ev->output.x, ev->output.y, 1, 1,
@@ -1722,3 +1860,47 @@
      }
 }
 
+static void
+_pager_menu_cb_speed_very_slow(void *data, E_Menu *m, E_Menu_Item *mi)
+{
+   Pager *pager;
+   pager = data;
+   pager->conf->speed = 60;
+   e_config_save_queue();
+}
+
+static void
+_pager_menu_cb_speed_slow(void *data, E_Menu *m, E_Menu_Item *mi)
+{
+   Pager *pager;
+   pager = data;
+   pager->conf->speed = 40;
+   e_config_save_queue();
+}
+
+static void
+_pager_menu_cb_speed_normal(void *data, E_Menu *m, E_Menu_Item *mi)
+{
+   Pager *pager;
+   pager = data;
+   pager->conf->speed = 12;
+   e_config_save_queue();
+}
+
+static void
+_pager_menu_cb_speed_fast(void *data, E_Menu *m, E_Menu_Item *mi)
+{
+   Pager *pager;
+   pager = data;
+   pager->conf->speed = 7;
+   e_config_save_queue();
+}
+
+static void
+_pager_menu_cb_speed_very_fast(void *data, E_Menu *m, E_Menu_Item *mi)
+{
+   Pager *pager;
+   pager = data;
+   pager->conf->speed = 3;
+   e_config_save_queue();
+}
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/modules/pager/e_mod_main.h,v
retrieving revision 1.25
retrieving revision 1.26
diff -u -3 -r1.25 -r1.26
--- e_mod_main.h        5 Sep 2005 23:14:58 -0000       1.25
+++ e_mod_main.h        6 Sep 2005 05:19:15 -0000       1.26
@@ -10,6 +10,7 @@
 typedef struct _Pager_Face  Pager_Face;
 typedef struct _Pager_Desk  Pager_Desk;
 typedef struct _Pager_Win   Pager_Win;
+typedef struct _Pager_Popup Pager_Popup;
 
 #define PAGER_RESIZE_NONE 0
 #define PAGER_RESIZE_HORZ 1
@@ -27,6 +28,8 @@
    Evas_List *faces;
    /* Position of desktop name */
    unsigned int deskname_pos;
+   /* How the popup is shown on desk change */
+   unsigned int speed;
 };
 
 struct _Config_Face
@@ -44,6 +47,7 @@
    Evas_List   *faces;
    E_Menu      *config_menu;
    E_Menu      *config_menu_deskname;
+   E_Menu      *config_menu_speed;
    Evas_List   *menus;
 
    Config      *conf;
@@ -116,6 +120,12 @@
    Evas_Object *icon_object;
 };
 
+struct _Pager_Popup
+{
+   E_Popup     *popup;
+   Pager_Face  *face;
+};
+
 EAPI void *e_modapi_init     (E_Module *module);
 EAPI int   e_modapi_shutdown (E_Module *module);
 EAPI int   e_modapi_save     (E_Module *module);




-------------------------------------------------------
SF.Net email is Sponsored by the Better Software Conference & EXPO
September 19-22, 2005 * San Francisco, CA * Development Lifecycle Practices
Agile & Plan-Driven Development * Managing Projects & Teams * Testing & QA
Security * Process Improvement & Measurement * http://www.sqe.com/bsce5sf
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to