elm_panes : - add an animation with 2 arrows while the bar is dragged. - add getter...
authorJonathan Atton <jonathan.atton@gmail.com>
Mon, 21 Jun 2010 20:15:57 +0000 (20:15 +0000)
committerJonathan Atton <jonathan.atton@gmail.com>
Mon, 21 Jun 2010 20:15:57 +0000 (20:15 +0000)
SVN revision: 49786

data/themes/Makefile.am
data/themes/arrow_left.png [new file with mode: 0644]
data/themes/default.edc
src/bin/test_panes.c
src/lib/Elementary.h.in
src/lib/elm_panes.c

index 717080189f9119ba44cca25705885b16cd9b363e..19fa359d59d4da1f5b2d8ea2d9296309b1abd889 100644 (file)
@@ -140,6 +140,7 @@ busy-7.png \
 busy-8.png \
 busy-9.png \
 arrow_right.png \
+arrow_left.png \
 bt_spinner_up.png \
 bt_spinner_down.png \
 bt_spinner_hilight.png \
diff --git a/data/themes/arrow_left.png b/data/themes/arrow_left.png
new file mode 100644 (file)
index 0000000..fbe0795
Binary files /dev/null and b/data/themes/arrow_left.png differ
index 4ee528c3f6209ed9c94694e87ded3364041ddcee..a576c2d8ee55cac8c72c1ef7f91d4e5786f5c73b 100644 (file)
@@ -23106,6 +23106,8 @@ collections {
         image: "bt_glow.png" COMP;
         image: "bt_dis_base.png" COMP;
         image: "bt_dis_hilight.png" COMP;
+         image: "arrow_right.png" COMP;
+         image: "arrow_left.png" COMP;
       }
      parts
        {
@@ -23120,7 +23122,7 @@ collections {
                     visible: 0;
                  }
             }
-          
+
          //2 contents
           part
             {
@@ -23130,7 +23132,7 @@ collections {
                description
                  {
                     state: "default" 0.0;
-                    rel2.to_x: "bar";
+                    rel2.to_x: "elm.bar";
                     rel2.relative: 0.0 1.0;
                     visible: 1;
                  }
@@ -23156,7 +23158,7 @@ collections {
                description
                  {
                     state: "default" 0.0;
-                    rel1.to_x: "bar";
+                    rel1.to_x: "elm.bar";
                     rel1.relative: 1.0 0.0;
                     visible: 1;
                  }
@@ -23174,7 +23176,7 @@ collections {
                  }
             }
          //BAR
-        part { name: "bar";
+        part { name: "elm.bar";
            mouse_events: 1;
             dragable {
                confine: "whole";
@@ -23182,8 +23184,8 @@ collections {
                y: 0 0 0;
             }
            description { state: "default" 0.0;
-               max: 15 999;
-               min: 15 999;
+               max: 15 9999;
+               min: 15 100;
               image {
                  normal: "bt_base2.png";
                  border: 7 7 7 7;
@@ -23206,8 +23208,8 @@ collections {
         part {   name: "over1";
            mouse_events: 0;
            description { state: "default" 0.0;
-            rel1.to: "bar";
-            rel2.to: "bar";
+            rel1.to: "elm.bar";
+            rel2.to: "elm.bar";
               rel2.relative: 1.0 0.5;
               image {
                  normal: "bt_hilight.png";
@@ -23227,8 +23229,8 @@ collections {
            repeat_events: 1;
             ignore_flags: ON_HOLD;
            description { state: "default" 0.0;
-            rel1.to: "bar";
-            rel2.to: "bar";
+            rel1.to: "elm.bar";
+            rel2.to: "elm.bar";
               image {
                  normal: "bt_shine.png";
                  border: 7 7 7 7;
@@ -23244,8 +23246,8 @@ collections {
             repeat_events: 1;
             description { state: "default" 0.0;
                color: 255 255 255 0;
-            rel1.to: "bar";
-            rel2.to: "bar";
+            rel1.to: "elm.bar";
+            rel2.to: "elm.bar";
                image {
                   normal: "bt_glow.png";
                   border: 12 12 12 12;
@@ -23259,6 +23261,68 @@ collections {
             }
          }
 
+         //Arrow
+         part {
+            name: "arrow_right";
+            description { state: "default" 0.0;
+                min: 45 45;
+                max: 45 45;
+                color: 255 255 255 0;
+
+                rel1.relative: 1.0 0.5;
+                rel1.to_x: "elm.bar";
+                rel1.offset: 45/2 -45/2;
+
+                rel2.relative: 1.0 0.5;
+                rel2.to_x: "elm.bar";
+                rel2.offset: 45/2 45/2;
+
+                image.normal: "arrow_right.png";
+            }
+            description { state: "anim_1" 0.0;
+                inherit: "default" 0.0;
+                color: 255 255 255 200;
+                rel1.offset: (45/2 + 10) -45/2;
+                rel2.offset: (45/2 +10) 45/2;
+            }
+            description { state: "anim_2" 0.0;
+                inherit: "default" 0.0;
+                color: 255 255 255 0;
+                rel1.offset: (45/2 + 20) -45/2;
+                rel2.offset: (45/2 + 20) 45/2;
+            }
+         }
+        part {
+            name: "arrow_left";
+            description { state: "default" 0.0;
+                min: 45 45;
+                max: 45 45;
+                color: 255 255 255 0;
+
+                rel1.relative: 0.0 0.5;
+                rel1.to_x: "elm.bar";
+                rel1.offset: -45/2 -45/2;
+
+                rel2.relative: 0.0 0.5;
+                rel2.to_x: "elm.bar";
+                rel2.offset: -45/2 45/2;
+
+                image.normal: "arrow_left.png";
+            }
+            description { state: "anim_1" 0.0;
+                inherit: "default" 0.0;
+                color: 255 255 255 200;
+                rel1.offset: (-45/2 - 10) -45/2;
+                rel2.offset: (-45/2 - 10) 45/2;
+            }
+            description { state: "anim_2" 0.0;
+                inherit: "default" 0.0;
+                color: 255 255 255 0;
+                rel1.offset: (-45/2 - 20) -45/2;
+                rel2.offset: (-45/2 - 20) 45/2;
+            }
+         }
+
        }
         programs {
         program {
@@ -23267,11 +23331,12 @@ collections {
            source: "over2";
            action: SIGNAL_EMIT "elm,action,press" "";
            after: "button_click_anim";
+            after: "arrow_anim_start";
         }
         program {
            name:   "button_click_anim";
            action: STATE_SET "clicked" 0.0;
-           target: "bar";
+           target: "elm.bar";
         }
         program {
            name:   "button_unclick";
@@ -23279,11 +23344,12 @@ collections {
            source: "over2";
            action: SIGNAL_EMIT "elm,action,unpress" "";
            after: "button_unclick_anim";
+            after: "arrow_anim_stop";
         }
         program {
            name:   "button_unclick_anim";
            action: STATE_SET "default" 0.0;
-           target: "bar";
+           target: "elm.bar";
         }
         program {
            name:   "button_click2";
@@ -23306,6 +23372,52 @@ collections {
            source: "over2";
            action: SIGNAL_EMIT "elm,action,click" "";
         }
+         program {
+           name:   "button_down_double";
+           signal: "mouse,down,1,double";
+           source: "over3";
+            action: SIGNAL_EMIT "elm,action,click,double" "";
+        }
+
+         //arrows animation
+         program {
+            name: "arrow_anim_start";
+            action: STATE_SET "anim_1" 0.0;
+            target: "arrow_right";
+            target: "arrow_left";
+            transition: LINEAR 0.6;
+            after: "arrow_anim_1";
+         }
+         program {
+            name: "arrow_anim_1";
+            action: STATE_SET "anim_2" 0.0;
+            target: "arrow_right";
+            target: "arrow_left";
+            transition: LINEAR 0.6;
+            after: "arrow_anim_2";
+         }
+         program {
+            name: "arrow_anim_2";
+            action: STATE_SET "default" 0.0;
+            target: "arrow_right";
+            target: "arrow_left";
+            after: "arrow_anim_start";
+         }
+         program {
+            name: "arrow_anim_stop";
+            action: ACTION_STOP;
+            target: "arrow_anim_start";
+            target: "arrow_anim_1";
+            target: "arrow_anim_2";
+            after: "arrow_anim_stop_1";
+         }
+         program {
+            name: "arrow_anim_stop_1";
+            action: STATE_SET "default" 0.0;
+            target: "arrow_right";
+            target: "arrow_left";
+            transition: DECELERATE 0.4;
+        }
       }
   }
 
index 50c92fdead29b04fe620366f4a5b7714859580c4..73b82f23aa12947922b6200958f21333bbacac1c 100644 (file)
@@ -1,7 +1,7 @@
 #include <Elementary.h>
 #ifndef ELM_LIB_QUICKLAUNCH
 
-static Elm_Genlist_Item_Class itc;
+static double size = 0.0;
 
 static void
 _press(void *data, Evas_Object *obj, void *event_info)
@@ -12,7 +12,7 @@ _press(void *data, Evas_Object *obj, void *event_info)
 static void
 _unpress(void *data, Evas_Object *obj, void *event_info)
 {
-    printf("unpress\n");
+    printf("unpress, size : %f\n", elm_panes_left_content_size_get(obj));
 }
 
 static void
@@ -21,6 +21,21 @@ _clicked(void *data, Evas_Object *obj, void *event_info)
     printf("clicked\n");
 }
 
+
+static void
+_clicked_double(void *data, Evas_Object *obj, void *event_info)
+{
+    printf("clicked double\n");
+    if(elm_panes_left_content_size_get(obj) > 0)
+    {
+        size = elm_panes_left_content_size_get(obj);
+        elm_panes_left_content_size_set(obj, 0.0);
+    }
+    else
+        elm_panes_left_content_size_set(obj, size);
+}
+
+
 void
 test_panes(void *data, Evas_Object *obj, void *event_info)
 {
@@ -44,6 +59,8 @@ test_panes(void *data, Evas_Object *obj, void *event_info)
    evas_object_show(panes);
 
    evas_object_smart_callback_add(panes, "clicked", _clicked, panes);
+   evas_object_smart_callback_add(panes, "clicked,double", _clicked_double, panes);
+
    evas_object_smart_callback_add(panes, "press", _press, panes);
    evas_object_smart_callback_add(panes, "unpress", _unpress, panes);
 
index a087d78e0a1c85081801ec3a2cabcca8eba186a5..535e89707692a373c6b6cdf70d3509cc13afea2e 100644 (file)
@@ -1474,11 +1474,12 @@ extern "C" {
     * Update the minimun height of the bar in the theme. No minimun should be set in the vertical theme
     * Add horyzontal theme
     * Add events (move, start ...)
-    * Add getter of the size of each content (30% - 70% ...)
     */
    EAPI Evas_Object          *elm_panes_add(Evas_Object *parent);
    EAPI void                  elm_panes_content_left_set(Evas_Object *obj, Evas_Object *content);
    EAPI void                  elm_panes_content_right_set(Evas_Object *obj, Evas_Object *content);
+   EAPI double               elm_panes_left_content_size_get(Evas_Object *obj);
+   EAPI void                 elm_panes_left_content_size_set(Evas_Object *obj, double size);
 
    typedef enum _Elm_Flip_Mode
      {
index 08610dba619836346ab43440acca1ee4594ec372..431151f5351e5b59e533cca8f2650beeb0152bbe 100644 (file)
@@ -20,6 +20,15 @@ struct _Widget_Data
        Evas_Object *left;
        Evas_Object *right;
      } contents;
+
+   struct
+     {
+       int x_diff;
+       int y_diff;
+       Eina_Bool move;
+     } move;
+
+   Eina_Bool clicked_double;
 };
 
 static const char *widtype = NULL;
@@ -92,6 +101,14 @@ _clicked(void *data, Evas_Object *obj __UNUSED__ , const char *emission __UNUSED
    evas_object_smart_callback_call(data, "clicked", NULL);
 }
 
+static void
+_clicked_double(void *data, Evas_Object *obj __UNUSED__ , const char *emission __UNUSED__, const char *source __UNUSED__)
+{
+   Widget_Data *wd = elm_widget_data_get(data);
+
+   wd->clicked_double = EINA_TRUE;
+}
+
 static void
 _press(void *data, Evas_Object *obj __UNUSED__ , const char *emission __UNUSED__, const char *source __UNUSED__)
 {
@@ -101,7 +118,14 @@ _press(void *data, Evas_Object *obj __UNUSED__ , const char *emission __UNUSED__
    static void
 _unpress(void *data, Evas_Object *obj __UNUSED__ , const char *emission __UNUSED__, const char *source __UNUSED__)
 {
+   Widget_Data *wd = elm_widget_data_get(data);
    evas_object_smart_callback_call(data, "unpress", NULL);
+
+   if(wd->clicked_double)
+     {
+       evas_object_smart_callback_call(data, "clicked,double", NULL);
+       wd->clicked_double = EINA_FALSE;
+     }
 }
 
 /**
@@ -134,7 +158,10 @@ elm_panes_add(Evas_Object *parent)
    elm_widget_resize_object_set(obj, wd->panes);
    evas_object_show(wd->panes);
 
+   elm_panes_left_content_size_set(obj, 0.5);
+
    edje_object_signal_callback_add(wd->panes, "elm,action,click", "", _clicked, obj);
+   edje_object_signal_callback_add(wd->panes, "elm,action,click,double", "", _clicked_double, obj);
    edje_object_signal_callback_add(wd->panes, "elm,action,press", "", _press, obj);
    edje_object_signal_callback_add(wd->panes, "elm,action,unpress", "", _unpress, obj);
 
@@ -184,3 +211,21 @@ EAPI void elm_panes_content_right_set(Evas_Object *obj, Evas_Object *content)
      }
 }
 
+EAPI double elm_panes_left_content_size_get(Evas_Object *obj)
+{
+   Widget_Data *wd = elm_widget_data_get(obj);
+   double w, h;
+
+   edje_object_part_drag_value_get(wd->panes, "elm.bar", &w, &h);
+
+   return w;
+}
+
+EAPI void elm_panes_left_content_size_set(Evas_Object *obj, double size)
+{
+   Widget_Data *wd = elm_widget_data_get(obj);
+
+   edje_object_part_drag_value_set(wd->panes, "elm.bar", size, 0.0);
+}
+
+