elementary: Introduce a new edje_external param to the progressbar widget.
authorMichaël Bouchaud (yoz) <yoz@efl.so>
Thu, 1 Sep 2016 23:58:27 +0000 (01:58 +0200)
committerMichaël Bouchaud (yoz) <yoz@efl.so>
Fri, 2 Sep 2016 00:13:19 +0000 (02:13 +0200)
This widget was lacking an edje_external param to notify the widget to start or
stop pulsing from edje.

@fix Now the edje_external progressbar test works as expected.

data/elementary/objects/test_external.edc
src/edje_external/elementary/elm_progressbar.c
src/lib/elementary/elm_progressbar.c
src/lib/elementary/elm_progressbar.eo

index 3a77ef0..f2b7a3b 100644 (file)
@@ -735,6 +735,18 @@ embryo script and from C code.";
          }
          program { name: "disable_button3";
             action: PARAM_SET "ext_button3" "disabled" 1;
+            after: "start_pulsing1";
+         }
+         program { name: "start_pulsing1";
+            action: PARAM_SET "ext_pbar2" "pulsing" 1;
+            after: "start_pulsing2";
+         }
+         program { name: "start_pulsing2";
+            action: PARAM_SET "ext_pbar5" "pulsing" 1;
+            after: "start_pulsing3";
+         }
+         program { name: "start_pulsing3";
+            action: PARAM_SET "ext_pbar7" "pulsing" 1;
             after: "anim_0";
          }
          program { name: "anim_0";
@@ -801,6 +813,18 @@ embryo script and from C code.";
          }
          program { name: "reenable_button3";
             action: PARAM_SET "ext_button3" "disabled" 0;
+            after: "stop_pulsing1";
+         }
+         program { name: "stop_pulsing1";
+            action: PARAM_SET "ext_pbar2" "pulsing" 0;
+            after: "stop_pulsing2";
+         }
+         program { name: "stop_pulsing2";
+            action: PARAM_SET "ext_pbar5" "pulsing" 0;
+            after: "stop_pulsing3";
+         }
+         program { name: "stop_pulsing3";
+            action: PARAM_SET "ext_pbar7" "pulsing" 0;
          }
          script {
             public my_value;
@@ -819,6 +843,9 @@ embryo script and from C code.";
                   external_param_set_bool(PART:"ext_button1", "disabled", 0);
                   external_param_set_bool(PART:"ext_button2", "disabled", 0);
                   external_param_set_bool(PART:"ext_button3", "disabled", 0);
+                  external_param_set_bool(PART:"ext_pbar2", "pulsing", 0);
+                  external_param_set_bool(PART:"ext_pbar5", "pulsing", 0);
+                  external_param_set_bool(PART:"ext_pbar7", "pulsing", 0);
                }
             }
          }
@@ -830,6 +857,9 @@ embryo script and from C code.";
                external_param_set_bool(PART:"ext_button1", "disabled", 1);
                external_param_set_bool(PART:"ext_button2", "disabled", 1);
                external_param_set_bool(PART:"ext_button3", "disabled", 1);
+               external_param_set_bool(PART:"ext_pbar2", "pulsing", 1);
+               external_param_set_bool(PART:"ext_pbar5", "pulsing", 1);
+               external_param_set_bool(PART:"ext_pbar7", "pulsing", 1);
                timer_cb(0);
             }
          }
index d044a6a..28148b5 100644 (file)
@@ -16,6 +16,8 @@ typedef struct _Elm_Params_Progressbar
    Eina_Bool horizontal_exists:1;
    Eina_Bool pulse:1;
    Eina_Bool pulse_exists:1;
+   Eina_Bool pulsing:1;
+   Eina_Bool pulsing_exists:1;
 } Elm_Params_Progressbar;
 
 static void
@@ -45,6 +47,8 @@ external_progressbar_state_set(void *data EINA_UNUSED, Evas_Object *obj,
      elm_progressbar_unit_format_set(obj, p->unit);
    if (p->pulse_exists)
      elm_progressbar_pulse_set(obj, p->pulse);
+   if  (p->pulsing_exists)
+     elm_progressbar_pulse(obj, p->pulsing);
 }
 
 static Eina_Bool
@@ -85,7 +89,7 @@ external_progressbar_param_set(void *data EINA_UNUSED, Evas_Object *obj,
              return EINA_TRUE;
           }
      }
-   else if (!strcmp(param->name, "pulse"))
+  else if (!strcmp(param->name, "pulse"))
      {
         if (param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
           {
@@ -93,6 +97,14 @@ external_progressbar_param_set(void *data EINA_UNUSED, Evas_Object *obj,
              return EINA_TRUE;
           }
      }
+   else if (!strcmp(param->name, "pulsing"))
+     {
+        if (param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
+          {
+             elm_progressbar_pulse(obj, param->i);
+             return EINA_TRUE;
+          }
+     }
    else if (!strcmp(param->name, "inverted"))
      {
         if (param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
@@ -165,6 +177,14 @@ external_progressbar_param_get(void *data EINA_UNUSED, const Evas_Object *obj,
              return EINA_TRUE;
           }
      }
+   else if (!strcmp(param->name, "pulsing"))
+     {
+        if (param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
+          {
+             param->i = elm_progressbar_is_pulsing_get(obj);
+             return EINA_TRUE;
+          }
+     }
    else if (!strcmp(param->name, "inverted"))
      {
         if (param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
@@ -238,6 +258,11 @@ external_progressbar_params_parse(void *data EINA_UNUSED,
              mem->pulse = !!param->i;
              mem->pulse_exists = EINA_TRUE;
           }
+        else if (!strcmp(param->name, "pulsing"))
+          {
+             mem->pulsing = !!param->i;
+             mem->pulsing_exists = EINA_TRUE;
+          }
         else if (!strcmp(param->name, "unit format"))
           mem->unit = eina_stringshare_add(param->s);
         else if (!strcmp(param->name, "label"))
@@ -274,6 +299,7 @@ static Edje_External_Param_Info external_progressbar_params[] = {
      EDJE_EXTERNAL_PARAM_INFO_DOUBLE("value"),
      EDJE_EXTERNAL_PARAM_INFO_BOOL("horizontal"),
      EDJE_EXTERNAL_PARAM_INFO_BOOL("pulse"),
+     EDJE_EXTERNAL_PARAM_INFO_BOOL("pulsing"),
      EDJE_EXTERNAL_PARAM_INFO_BOOL("inverted"),
      EDJE_EXTERNAL_PARAM_INFO_INT("span"),
      EDJE_EXTERNAL_PARAM_INFO_STRING_DEFAULT("unit format", "%1.2f"),
index 994c9f3..e8d4bea 100644 (file)
@@ -477,6 +477,12 @@ _elm_progressbar_pulse(Eo *obj, Elm_Progressbar_Data *sd, Eina_Bool state)
      elm_layout_signal_emit(obj, "elm,state,pulse,stop", "elm");
 }
 
+EOLIAN static Eina_Bool
+_elm_progressbar_is_pulsing_get(const Eo *obj EINA_UNUSED, Elm_Progressbar_Data *sd)
+{
+   return (sd->pulse_state && sd->pulse);
+}
+
 EOLIAN static void
 _elm_progressbar_part_value_set(Eo *obj EINA_UNUSED, Elm_Progressbar_Data *sd, const char *part_name, double val)
 {
index b7d935e..885d826 100644 (file)
@@ -53,6 +53,11 @@ class Elm.Progressbar (Elm.Layout, Efl.Ui.Progress,
             @in state: bool; [[$true, to start the pulsing animation, $false to stop it]]
          }
       }
+      is_pulsing_get @const {
+         [[Get the pulsing state on a given progressbar widget. ]]
+
+         return: bool; [[$true if the $obj is currently pulsing ]]
+      }
    }
    implements {
       class.constructor;