Enlightenment CVS committal

Author  : atmosphere
Project : misc
Module  : eke

Dir     : misc/eke/src


Modified Files:
        eke_gui_edje.c eke_gui_edje_item.c eke_gui_edje_item.h 


Log Message:
add panning
===================================================================
RCS file: /cvsroot/enlightenment/misc/eke/src/eke_gui_edje.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -3 -r1.2 -r1.3
--- eke_gui_edje.c      27 Dec 2004 23:31:19 -0000      1.2
+++ eke_gui_edje.c      28 Dec 2004 22:24:35 -0000      1.3
@@ -10,6 +10,8 @@
 
 static void eke_gui_edje_win_del_cb(Ecore_Evas *ee);
 static void eke_gui_edje_win_resize_cb(Ecore_Evas *ee);
+static void eke_gui_edje_feed_container_scroll_cb(void *data, 
+                        Evas_Object *o, const char *src, const char *em);
 
 typedef struct Eke_Gui_Edje_Feed Eke_Gui_Edje_Feed;
 struct Eke_Gui_Edje_Feed
@@ -77,7 +79,7 @@
     esmart_container_padding_set(o, 0, 0, 0, 0);
     esmart_container_spacing_set(o, 0);
     esmart_container_move_button_set(o, 2);
-    esmart_container_fill_policy_set(o, CONTAINER_FILL_POLICY_NONE);
+    esmart_container_fill_policy_set(o, CONTAINER_FILL_POLICY_FILL_X);
     esmart_container_direction_set(o, CONTAINER_DIRECTION_VERTICAL);
     edje_object_part_swallow(edje, "feeds.list.items", o);
     evas_object_show(o);
@@ -139,18 +141,28 @@
     if((part = edje_object_part_swallow_get(eke->gui.edje.edje, 
                                                     "feed.body"))) {
         edje_object_part_unswallow(eke->gui.edje.edje, part);
+        evas_object_hide(part);
     }
     edje_object_part_swallow(eke->gui.edje.edje, "feed.body", disp->body);
     edje_object_part_geometry_get(eke->gui.edje.edje, "feed.body",
                                                         NULL, NULL, &w, &h);
+    edje_object_signal_callback_del(eke->gui.edje.edje, "drag",
+                                    "feed.body.scroll", 
+                                    eke_gui_edje_feed_container_scroll_cb);
+    edje_object_signal_callback_add(eke->gui.edje.edje, "drag",
+                                    "feed.body.scroll",
+                                    eke_gui_edje_feed_container_scroll_cb,
+                                    disp->body);
 
     esmart_container_empty(disp->body);
     ecore_list_goto_first(feed->items);
     edje_object_file_get(eke->gui.edje.edje, &file, NULL);
     while ((item = ecore_list_next(feed->items)) != NULL) {
         if((obj = eke_gui_edje_item_new(evas, eke->gui.edje.theme, 
"feed.body.item"))) {
-            eke_gui_edje_item_init(obj, item->title, item->link, item->desc);
-            evas_object_resize(obj, w, 150);
+            eke_gui_edje_item_init(obj, item->title, item->date, item->link, 
item->desc);
+            eke_gui_edje_item_size_min_get(obj, &w, &h);
+            if ((w > 0) && (h > 0))
+                evas_object_resize(obj, w, h);
             evas_object_show(obj);
             esmart_container_element_append(disp->body, obj);
         }
@@ -196,3 +208,41 @@
 }
 
 
+static void
+eke_gui_edje_feed_container_scroll_cb(void *data, Evas_Object *o, 
+                                    const char *em, const char *src)
+{
+    double sx = 0.0, sy = 0.0;
+    double container_length = 0.0;
+    Evas_Object *container = NULL;
+    Evas_Coord cw = (Evas_Coord)0.0, ch = (Evas_Coord)0.0;
+
+    if((container = (Evas_Object*)data)) {
+        
+        edje_object_part_geometry_get(o, "feed.body", NULL, NULL, &cw, &ch);
+        container_length = esmart_container_elements_length_get(container);
+        edje_object_part_drag_value_get(o, src, &sx, &sy);
+        switch (esmart_container_direction_get(container))
+        {
+            case CONTAINER_DIRECTION_HORIZONTAL:
+                if(container_length > cw) 
+                {
+                    container_length -= cw;
+                    esmart_container_scroll_offset_set(container,
+                                              - (int) (sx * container_length));
+                }
+                break;
+            case CONTAINER_DIRECTION_VERTICAL:
+                if(container_length > ch) 
+                {
+                    container_length -= ch;
+                    esmart_container_scroll_offset_set(container,
+                                              - (int) (sy * container_length));
+                }
+                break;
+            default:
+                fprintf(stderr, "Unknown Container Orientation\n");
+                break;
+        }
+    }
+}
===================================================================
RCS file: /cvsroot/enlightenment/misc/eke/src/eke_gui_edje_item.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -3 -r1.2 -r1.3
--- eke_gui_edje_item.c 28 Dec 2004 03:39:36 -0000      1.2
+++ eke_gui_edje_item.c 28 Dec 2004 22:24:35 -0000      1.3
@@ -53,8 +53,19 @@
     src = NULL;
 }
 void
-eke_gui_edje_item_init(Evas_Object *o, const char *label, const char *link,
-const char *body)
+eke_gui_edje_item_size_min_get(Evas_Object *o, Evas_Coord *w, Evas_Coord *h)
+{
+  Eke_Gui_Edje_Item *data;
+  
+  if((data = evas_object_smart_data_get(o)))
+  {
+      edje_object_size_min_get(data->obj, w, h);
+  }
+        
+}
+void
+eke_gui_edje_item_init(Evas_Object *o, const char *label, const char *date,
+const char *link, const char *body)
 {
   Eke_Gui_Edje_Item *data;
   
@@ -76,12 +87,24 @@
             edje_object_part_text_set(data->obj, "link", "");
         }
     }
+    if(edje_object_part_exists(data->obj, "date"))
+    {
+        if(date) {
+            edje_object_part_text_set(data->obj, "date", date);
+        } else {
+            edje_object_part_text_set(data->obj, "date", "");
+        }
+    }
     if(edje_object_part_exists(data->obj, "body"))
     {
         if(body) {
             Evas_Object *desc;
             Etox_Context *ctx;
-
+            
+            if((desc = edje_object_part_swallow_get(data->obj, "body"))) 
+            {
+                evas_object_del(desc);
+            }
             desc = etox_new(evas_object_evas_get(o));
             ctx = etox_get_context(desc);
             etox_context_set_color(ctx, 0, 0, 0, 255);
@@ -105,24 +128,20 @@
 Evas_Object*
 eke_gui_edje_item_new(Evas *e, const char *file, const char *group)
 {
-  char buf[PATH_MAX], buf2[PATH_MAX];
   Evas_Object *result = NULL;
   Eke_Gui_Edje_Item *data = NULL;
+  Evas_Coord w = (Evas_Coord)0.0, h = (Evas_Coord)0.0;
 
-  snprintf(buf, PATH_MAX, "%s", file);
-  snprintf(buf2, PATH_MAX, "%s", group);
-//    printf(stderr, "NEW:%s,%s\n", file, group);
   if((result = eke_gui_edje_item_object_new(e)))
   {
     if((data = evas_object_smart_data_get(result)))
     {
         data->obj = edje_object_add(e);
-//  printf("%s\n", buf);
-//  printf("%s\n", buf2);
         if(edje_object_file_set(data->obj, file, group) == 1)
         {
-                evas_object_move(data->obj, -250, 80);
-                evas_object_resize(data->obj, 350, 80);
+            evas_object_move(data->obj, -9999, -9999);
+            edje_object_size_min_get(data->obj, &w, &h);
+            evas_object_resize(data->obj, w, h);
         } else {
             fprintf(stderr, "edje_file_set_error %d\n", 
                     edje_object_load_error_get(data->obj));
@@ -196,9 +215,18 @@
 _eke_gui_edje_item_object_del(Evas_Object *o)
 {
   Eke_Gui_Edje_Item *data;
-  
+    Evas_Object *obj = NULL;
+
   if((data = evas_object_smart_data_get(o)))
   {
+      if(data->obj) 
+      {
+        if((obj = edje_object_part_swallow_get(data->obj, "body"))) 
+        {
+            evas_object_del(obj);
+        }
+        evas_object_del(data->obj);
+      }
     free(data);
   }
 }
===================================================================
RCS file: /cvsroot/enlightenment/misc/eke/src/eke_gui_edje_item.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -3 -r1.1 -r1.2
--- eke_gui_edje_item.h 27 Dec 2004 22:45:01 -0000      1.1
+++ eke_gui_edje_item.h 28 Dec 2004 22:24:35 -0000      1.2
@@ -11,10 +11,11 @@
     Evas_Coord x, y, w, h;
 };
 
-Evas_Object*
-eke_gui_edje_item_new(Evas *e, const char *file, const char *group);
-void
-eke_gui_edje_item_init(Evas_Object *o, const char *label, const char *txt,
-const char *body);
+Evas_Object* eke_gui_edje_item_new(Evas *e, 
+                                    const char *file, const char *group);
+void eke_gui_edje_item_init(Evas_Object *o, const char *label, 
+                    const char *date, const char *link, const char *body);
+void eke_gui_edje_item_size_min_get(Evas_Object *o, 
+                                    Evas_Coord *w, Evas_Coord *h);
 
 #endif




-------------------------------------------------------
SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now. 
http://productguide.itmanagersjournal.com/
_______________________________________________
enlightenment-cvs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to