[svn 51733]test_launcher.c
authorshilpa singh <shilpa.singh@samsung.com>
Fri, 8 Oct 2010 13:23:44 +0000 (22:23 +0900)
committershilpa singh <shilpa.singh@samsung.com>
Fri, 8 Oct 2010 13:23:44 +0000 (22:23 +0900)
src/bin/test_launcher.c

index d184dc2..2dacfeb 100644 (file)
@@ -59,22 +59,140 @@ close_cb(void *data, Evas_Object *obj, void *event_info)
    evas_object_del(data);
 }
 
+static Eina_Bool
+tim_cb(void *data)
+{
+   Evas_Object *tb, *sc, *mb;
+   Eina_List *list, *l;
+   
+   printf("timeout!\n");
+   evas_object_data_del(data, "timer");
+   tb = evas_object_data_get(data, "tb");
+   sc = evas_object_data_get(data, "sc");
+   mb = evas_object_data_get(data, "mb");
+   elm_object_scroll_freeze_push(sc);
+   evas_object_data_set(data, "dragging", (void *)(1));
+   evas_object_color_set(data, 255, 255, 255, 255);
+   list = (Eina_List *)evas_object_data_get
+      (elm_object_top_widget_get(data), "mbs");
+   EINA_LIST_FOREACH(list, l, mb)
+      evas_object_color_set(mb, 128, 128, 128, 128);
+   elm_table_unpack(tb, data);
+   return EINA_FALSE;
+}
+
+static void
+ic_del_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+   Ecore_Timer *tim;
+   
+   tim = evas_object_data_get(obj, "timer");
+   if (tim)
+     {
+        printf("nmotim\n");
+        evas_object_data_del(obj, "timer");
+        ecore_timer_del(tim);
+     }
+}
+
 static void
 ic_down_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
 {
+   Evas_Event_Mouse_Down *ev = event_info;
+   Ecore_Timer *tim;
+   Evas_Coord x, y, w, h;
+   
    evas_object_color_set(data, 128, 0, 0, 128);
+   
+   tim = evas_object_data_get(obj, "timer");
+   if (tim) evas_object_data_del(obj, "timer");
+   tim = ecore_timer_add(1.0, tim_cb, obj);
+   evas_object_data_set(obj, "timer", tim);
+
+   evas_object_geometry_get(data, &x, &y, &w, &h);
+   evas_object_data_set(obj, "x", (void *)(ev->canvas.x));
+   evas_object_data_set(obj, "y", (void *)(ev->canvas.y));
+   evas_object_data_set(obj, "px", (void *)(x));
+   evas_object_data_set(obj, "py", (void *)(y));
+   
+   if (ev->flags & EVAS_BUTTON_DOUBLE_CLICK)
+     {
+        printf("double click %p\n", obj);
+     }
 }
 
 static void
 ic_up_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
 {
+   Evas_Event_Mouse_Up *ev = event_info;
+   Ecore_Timer *tim;
+   
+   if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) return;
    evas_object_color_set(data, 255, 255, 255, 255);
+   tim = evas_object_data_get(obj, "timer");
+   if (tim)
+     {
+        printf("nmotim2\n");
+        evas_object_data_del(obj, "timer");
+        ecore_timer_del(tim);
+     }
+   if (evas_object_data_get(obj, "dragging"))
+     {
+        Evas_Object *tb, *sc, *mb;
+        Eina_List *list, *l;
+        int tbx, tby;
+        
+        evas_object_data_del(obj, "dragging");
+        tb = evas_object_data_get(obj, "tb");
+        sc = evas_object_data_get(obj, "sc");
+        mb = evas_object_data_get(data, "mb");
+        elm_object_scroll_freeze_pop(sc);
+        tbx = (int)evas_object_data_get(obj, "tbx");
+        tby = (int)evas_object_data_get(obj, "tby");
+        elm_table_pack(tb, obj, tbx, tby, 1, 1);
+        list = (Eina_List *)evas_object_data_get
+           (elm_object_top_widget_get(obj), "mbs");
+        EINA_LIST_FOREACH(list, l, mb)
+           evas_object_color_set(mb, 255, 255, 255, 255);
+     }
+}
+
+static void
+ic_move_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+   Evas_Event_Mouse_Move *ev = event_info;
+   if (evas_object_data_get(obj, "dragging"))
+     {
+        Evas_Coord x, y, px, py;
+        
+        x = (Evas_Coord)evas_object_data_get(obj, "x");
+        y = (Evas_Coord)evas_object_data_get(obj, "y");
+        px = (Evas_Coord)evas_object_data_get(obj, "px");
+        py = (Evas_Coord)evas_object_data_get(obj, "py");
+        evas_object_move(obj, 
+                         px + ev->cur.canvas.x - x, 
+                         py + ev->cur.canvas.y - y);
+    }
+   if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD)
+     {
+        Ecore_Timer *tim;
+        
+        tim = evas_object_data_get(obj, "timer");
+        if (tim)
+          {
+             printf("nmotim3\n");
+             evas_object_data_del(obj, "timer");
+             ecore_timer_del(tim);
+          }
+        evas_object_color_set(data, 255, 255, 255, 255);
+        return;
+     }
 }
 
 void
 test_launcher(void *data, Evas_Object *obj, void *event_info)
 {
-   Evas_Object *win, *bg, *sc, *tb, *pad, *bt, *ic, *lb, *tb2, *mb, *ck, *bx, *rc;
+   Evas_Object *win, *bg, *sc, *tb, *pad, *bt, *ic, *lb, *tb2, *mb, *ck, *bx, *bx2;
    int i, j, k, n, m;
    char buf[PATH_MAX];
    const char *names[] =
@@ -101,6 +219,12 @@ test_launcher(void *data, Evas_Object *obj, void *event_info)
    elm_box_homogenous_set(bx, 1);
    elm_box_horizontal_set(bx, 1);
    
+   sc = elm_scroller_add(win);
+   elm_scroller_bounce_set(sc, 1, 0);
+   elm_scroller_policy_set(sc, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_OFF);
+   evas_object_size_hint_weight_set(sc, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+   evas_object_size_hint_fill_set(sc, EVAS_HINT_FILL, EVAS_HINT_FILL);
+   
    n = 0; m = 0;
    for (k = 0 ; k < 8; k++)
      {
@@ -132,6 +256,10 @@ test_launcher(void *data, Evas_Object *obj, void *event_info)
         evas_object_size_hint_align_set(pad, EVAS_HINT_FILL, EVAS_HINT_FILL);
         elm_table_pack(tb, pad, 6, 1, 1, 10);
 
+        mb = elm_mapbuf_add(win);
+        elm_mapbuf_content_set(mb, tb);
+        evas_object_show(tb);
+        
         for (j = 0; j < 5; j++)
           {
              for (i = 0; i < 5; i++)
@@ -154,26 +282,24 @@ test_launcher(void *data, Evas_Object *obj, void *event_info)
                   elm_table_pack(tb, lb, 1 + i, 1 + (j * 2) + 1, 1, 1);
                   evas_object_show(lb);
                   
-                  rc = evas_object_rectangle_add(evas_object_evas_get(win));
-                  evas_object_color_set(rc, 0, 0, 0, 0);
-                  evas_object_size_hint_weight_set(rc, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
-                  evas_object_size_hint_align_set(rc, EVAS_HINT_FILL, EVAS_HINT_FILL);
-                  elm_table_pack(tb, rc, 1 + i, 1 + (j * 2), 1, 2);
-                  evas_object_show(rc);
+                  evas_object_event_callback_add(ic, EVAS_CALLBACK_DEL, ic_del_cb, ic);
                   
-                  evas_object_event_callback_add(rc, EVAS_CALLBACK_MOUSE_DOWN, ic_down_cb, lb);
-                  evas_object_event_callback_add(rc, EVAS_CALLBACK_MOUSE_UP,   ic_up_cb,   lb);
+                  evas_object_event_callback_add(ic, EVAS_CALLBACK_MOUSE_DOWN, ic_down_cb, ic);
+                  evas_object_event_callback_add(ic, EVAS_CALLBACK_MOUSE_UP,   ic_up_cb,   ic);
+                  evas_object_event_callback_add(ic, EVAS_CALLBACK_MOUSE_MOVE, ic_move_cb, ic);
                   
-                  evas_object_event_callback_add(rc, EVAS_CALLBACK_MOUSE_DOWN, ic_down_cb, ic);
-                  evas_object_event_callback_add(rc, EVAS_CALLBACK_MOUSE_UP,   ic_up_cb,   ic);
+                  evas_object_data_set(ic, "lb", lb);
+                  evas_object_data_set(ic, "tb", tb);
+                  evas_object_data_set(ic, "sc", sc);
+                  evas_object_data_set(ic, "bx", bx);
+                  evas_object_data_set(ic, "mb", mb);
+                  evas_object_data_set(ic, "tbx", (void *)(1 + i));
+                  evas_object_data_set(ic, "tby", (void *)(1 + (j * 2)));
                   
                   n++; if (n > 23) n = 0;
                   m++; if (m > 15) m = 0;
                }
           }
-        mb = elm_mapbuf_add(win);
-        elm_mapbuf_content_set(mb, tb);
-        evas_object_show(tb);
         
         elm_box_pack_end(bx, mb);
         evas_object_show(mb);
@@ -184,11 +310,11 @@ test_launcher(void *data, Evas_Object *obj, void *event_info)
    // fixme: free mbs
    evas_object_data_set(win, "mbs", mbs);
    
-   sc = elm_scroller_add(win);
-   elm_scroller_bounce_set(sc, 1, 0);
-   elm_scroller_policy_set(sc, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_OFF);
-   evas_object_size_hint_weight_set(sc, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
-   elm_win_resize_object_add(win, sc);
+   bx2 = elm_box_add(win);
+   evas_object_size_hint_weight_set(bx2, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+   elm_box_horizontal_set(bx2, 0);
+   elm_win_resize_object_add(win, bx2);
+   evas_object_show(bx2);
    
    elm_scroller_content_set(sc, bx);
    evas_object_show(bx);
@@ -197,8 +323,11 @@ test_launcher(void *data, Evas_Object *obj, void *event_info)
    evas_object_show(sc);
 
    tb2 = elm_table_add(win);
-   evas_object_size_hint_weight_set(tb2, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
-   elm_win_resize_object_add(win, tb2);
+   evas_object_size_hint_weight_set(tb2, EVAS_HINT_EXPAND, 0.0);
+   evas_object_size_hint_fill_set(tb2, EVAS_HINT_FILL, EVAS_HINT_FILL);
+   elm_box_pack_end(bx2, tb2);
+
+   elm_box_pack_end(bx2, sc);
    
    ck = elm_check_add(win);
    elm_check_label_set(ck, "Map");