[edje_externals] Policy set property added.
authorPrince Kr Dubey <prince.dubey@samsung.com>
Thu, 11 Nov 2010 05:52:34 +0000 (14:52 +0900)
committerPrince Kr Dubey <prince.dubey@samsung.com>
Thu, 11 Nov 2010 05:52:34 +0000 (14:52 +0900)
src/edje_externals/elm_scroller.c

index da7b95f..d0f4a3f 100644 (file)
@@ -3,7 +3,8 @@
 typedef struct _Elm_Params_Scroller
 {
    Elm_Params base;
-   const char *policy;
+   const char *h_policy;
+   const char *v_policy;
    Eina_Bool bounce_exist: 1;
    Eina_Bool h_bounce:1;
    Eina_Bool h_bounce_exists:1;
@@ -11,140 +12,112 @@ typedef struct _Elm_Params_Scroller
    Eina_Bool v_bounce_exists:1;
 }Elm_Params_Scroller;
 
-static const char* list_policy_choices[] = {"auto", "on", "off", NULL};
+static const char* scroller_policy_choices[] = {"auto", "on", "off", NULL};
 
 static Elm_Scroller_Policy
-_scroller_horizontal_policy_setting_get(const char *horizontal_policy_str)
+_scroller_policy_setting_get(const char *policy_str)
 {
    unsigned int i;
 
-   assert(sizeof(list_policy_choices)/sizeof(list_policy_choices[0]) == ELM_SCROLLER_POLICY_LAST + 1);
+   assert(sizeof(scroller_policy_choices)/sizeof(scroller_policy_choices[0]) == ELM_SCROLLER_POLICY_LAST + 1);
 
-   for (i = 0; i < sizeof(list_policy_choices); i++)
+   for (i = 0; i < sizeof(scroller_policy_choices); i++)
      {
-           if (!strcmp(horizontal_policy_str, list_policy_choices[i]))
+           if (!strcmp(policy_str, scroller_policy_choices[i]))
             return i;
      }
    return ELM_SCROLLER_POLICY_LAST;
 }
 
-static Elm_Scroller_Policy
-_scroller_vertical_policy_setting_get(const char *vertical_policy_str)
-{
-   unsigned int i;
-
-   assert(sizeof(list_policy_choices)/sizeof(list_policy_choices[0]) == ELM_SCROLLER_POLICY_LAST + 1);
-
-   for (i = 0; i < sizeof(list_policy_choices); i++)
-     {
-          if (!strcmp(vertical_policy_str, list_policy_choices[i]))
-          return i;
-     }
-   return ELM_SCROLLER_POLICY_LAST;
-}
 
 static void
 external_scroller_state_set(void *data __UNUSED__, Evas_Object *obj, const void *from_params, const void *to_params, float pos __UNUSED__)
 {
    const Elm_Params_Scroller *p;
+   Elm_Scroller_Policy policy_h, policy_v;
+   Eina_Bool h_bounce, v_bounce;
 
    if (to_params) p = to_params;
    else if (from_params) p = from_params;
    else return;
 
-   if (p->policy)
+   if ((p->h_policy) && (p->v_policy))
      {
-          Elm_Scroller_Policy h_policy;
-          Elm_Scroller_Policy v_policy;
-
-          h_policy = _scroller_horizontal_policy_setting_get(p->policy);
-          v_policy = _scroller_vertical_policy_setting_get(p->policy);
-
-          if (h_policy != ELM_LIST_LAST && v_policy != ELM_LIST_LAST)
-                 elm_scroller_policy_set(obj, h_policy, v_policy);
-          else
-           {
-                  Elm_Scroller_Policy /*unsigned int*/ policy_h, policy_v;
-
-                  elm_scroller_policy_get(obj, &policy_h, &policy_v);
-
-                  if (h_policy != ELM_LIST_LAST && v_policy == ELM_LIST_LAST)
-                     elm_scroller_policy_set(obj, h_policy, policy_v);
-                  else if(v_policy != ELM_LIST_LAST && h_policy == ELM_LIST_LAST)
-                     elm_scroller_policy_set(obj, policy_h, v_policy);
-                  else
-                 elm_scroller_policy_set(obj, policy_h, policy_v);
-          }
+          policy_h = _scroller_policy_setting_get(p->h_policy);
+          policy_v = _scroller_policy_setting_get(p->v_policy);
+
+          elm_scroller_policy_set(obj, policy_h, policy_v);
+     }
+   else if ((p->h_policy) || (p->v_policy))
+     {
+          elm_scroller_policy_get(obj, &policy_h, &policy_v);
+
+          if (p->h_policy)
+             policy_h = _scroller_policy_setting_get(p->h_policy);
+          else
+             policy_v = _scroller_policy_setting_get(p->v_policy);
+          elm_scroller_policy_set(obj, policy_h, policy_v);
      }
    if ((p->h_bounce_exists) && (p->v_bounce_exists))
           elm_scroller_bounce_set(obj, p->h_bounce, p->v_bounce);
-      else if ((p->h_bounce_exists) || (p->v_bounce_exists))
-        {
-              Eina_Bool h_bounce, v_bounce;
-
-              elm_scroller_bounce_get(obj, &h_bounce, &v_bounce);
-              if (p->h_bounce_exists)
-                     elm_scroller_bounce_set(obj, p->h_bounce, v_bounce);
-          else
-                     elm_scroller_bounce_set(obj, h_bounce, p->v_bounce);
-        }
+   else if ((p->h_bounce_exists) || (p->v_bounce_exists))
+        {
+           elm_scroller_bounce_get(obj, &h_bounce, &v_bounce);
+           if (p->h_bounce_exists)
+                  elm_scroller_bounce_set(obj, p->h_bounce, v_bounce);
+           else
+                  elm_scroller_bounce_set(obj, h_bounce, p->v_bounce);
+        }
 }
 
 static Eina_Bool
 external_scroller_param_set(void *data __UNUSED__, Evas_Object *obj, const Edje_External_Param *param)
-       {
-       if (!strcmp(param->name, "horizontal policy"))
-         {
-            if (param->type == EDJE_EXTERNAL_PARAM_TYPE_CHOICE)
-              {
-                     Elm_Scroller_Policy h_policy;
-                         Elm_Scroller_Policy policy_h, policy_v;
-
-                         elm_scroller_policy_get(obj, &policy_h, &policy_v);
-
-                         h_policy = _scroller_horizontal_policy_setting_get(param->s);
-
-                     if (h_policy == ELM_LIST_LAST) return EINA_FALSE;
-                     elm_scroller_policy_set(obj, h_policy, policy_v);
-                     return EINA_TRUE;
-              }
-         }
-       else if (!strcmp(param->name, "vertical policy"))
-         {
-            if (param->type == EDJE_EXTERNAL_PARAM_TYPE_CHOICE)
-              {
-                     Elm_Scroller_Policy v_policy;
-                         Elm_Scroller_Policy policy_h, policy_v;
-
-                         elm_scroller_policy_get(obj, &policy_h, &policy_v);
-
-                         v_policy = _scroller_vertical_policy_setting_get(param->s);
-
-                     if (v_policy == ELM_LIST_LAST) return EINA_FALSE;
-                     elm_scroller_policy_set(obj, policy_h, v_policy);
-                     return EINA_TRUE;
-              }
-         }
-       else if (!strcmp(param->name, "horizontal bounce"))
-         {
-                if (param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
-                  {
-                     Eina_Bool h_bounce, v_bounce;
-                     elm_scroller_bounce_get(obj, &h_bounce, &v_bounce);
-                     elm_scroller_bounce_set(obj, param->i, v_bounce);
-                     return EINA_TRUE;
-                  }
-         }
-    else if (!strcmp(param->name, "vertical bounce"))
-         {
-               if (param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
-              {
-                         Eina_Bool h_bounce, v_bounce;
-                         elm_scroller_bounce_get(obj, &h_bounce, &v_bounce);
-                         elm_scroller_bounce_set(obj, h_bounce, param->i);
-                         return EINA_TRUE;
-                  }
-         }
+{
+   Elm_Scroller_Policy policy_h, policy_v, h_policy, v_policy;
+   Eina_Bool h_bounce, v_bounce;
+
+   if (!strcmp(param->name, "horizontal policy"))
+        {
+           if (param->type == EDJE_EXTERNAL_PARAM_TYPE_CHOICE)
+                 {
+                    elm_scroller_policy_get(obj, &policy_h, &policy_v);
+                    h_policy = _scroller_policy_setting_get(param->s);
+
+                    if (h_policy == ELM_SCROLLER_POLICY_LAST) return EINA_FALSE;
+                    elm_scroller_policy_set(obj, h_policy, policy_v);
+                    return EINA_TRUE;
+                 }
+        }
+   else if (!strcmp(param->name, "vertical policy"))
+        {
+           if (param->type == EDJE_EXTERNAL_PARAM_TYPE_CHOICE)
+                 {
+             elm_scroller_policy_get(obj, &policy_h, &policy_v);
+             v_policy = _scroller_vertical_policy_setting_get(param->s);
+
+             if (v_policy == ELM_SCROLLER_POLICY_LAST) return EINA_FALSE;
+             elm_scroller_policy_set(obj, policy_h, v_policy);
+             return EINA_TRUE;
+                 }
+        }
+   else if (!strcmp(param->name, "horizontal bounce"))
+        {
+           if (param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
+                 {
+             elm_scroller_bounce_get(obj, &h_bounce, &v_bounce);
+             elm_scroller_bounce_set(obj, param->i, v_bounce);
+             return EINA_TRUE;
+                 }
+        }
+   else if (!strcmp(param->name, "vertical bounce"))
+        {
+           if (param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
+                 {
+                    elm_scroller_bounce_get(obj, &h_bounce, &v_bounce);
+                    elm_scroller_bounce_set(obj, h_bounce, param->i);
+                    return EINA_TRUE;
+                 }
+        }
 
    ERR("unknown parameter '%s' of type '%s'",
        param->name, edje_external_param_type_str(param->type));
@@ -155,17 +128,19 @@ external_scroller_param_set(void *data __UNUSED__, Evas_Object *obj, const Edje_
 static Eina_Bool
 external_scroller_param_get(void *data __UNUSED__, const Evas_Object *obj, Edje_External_Param *param)
 {
+   Elm_Scroller_Policy h_policy, v_policy;
+   Eina_Bool h_bounce, v_bounce;
+
    if (!strcmp(param->name, "horizontal policy"))
-        {
+     {
                if (param->type == EDJE_EXTERNAL_PARAM_TYPE_CHOICE)
                  {
-                        Elm_Scroller_Policy h_policy, v_policy;
                         elm_scroller_policy_get(obj, &h_policy, &v_policy);
 
-                    if (h_policy == ELM_LIST_LAST)
+                    if (h_policy == ELM_SCROLLER_POLICY_LAST)
                       return EINA_FALSE;
 
-                    param->s = list_policy_choices[h_policy];
+                    param->s = scroller_policy_choices[h_policy];
                     return EINA_TRUE;
                  }
         }
@@ -173,13 +148,12 @@ external_scroller_param_get(void *data __UNUSED__, const Evas_Object *obj, Edje_
      {
         if (param->type == EDJE_EXTERNAL_PARAM_TYPE_CHOICE)
           {
-                        Elm_Scroller_Policy h_policy, v_policy;
                         elm_scroller_policy_get(obj, &h_policy, &v_policy);
 
-                    if (v_policy == ELM_LIST_LAST)
+                    if (v_policy == ELM_SCROLLER_POLICY_LAST)
                       return EINA_FALSE;
 
-                    param->s = list_policy_choices[v_policy];
+                    param->s = scroller_policy_choices[v_policy];
                     return EINA_TRUE;
                  }
         }
@@ -187,7 +161,6 @@ external_scroller_param_get(void *data __UNUSED__, const Evas_Object *obj, Edje_
      {
            if (param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
              {
-                Eina_Bool h_bounce, v_bounce;
                 elm_scroller_bounce_get(obj, &h_bounce, &v_bounce);
                 param->i = h_bounce;
                 return EINA_TRUE;
@@ -197,7 +170,6 @@ external_scroller_param_get(void *data __UNUSED__, const Evas_Object *obj, Edje_
      {
            if (param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
              {
-                Eina_Bool h_bounce, v_bounce;
                 elm_scroller_bounce_get(obj, &h_bounce, &v_bounce);
                 param->i = v_bounce;
                 return EINA_TRUE;
@@ -224,9 +196,9 @@ external_scroller_params_parse(void *data, Evas_Object *obj, const Eina_List *pa
    EINA_LIST_FOREACH(params, l, param)
      {
            if (!strcmp(param->name, "horizontal policy"))
-               mem->policy = eina_stringshare_add(param->s);
+               mem->h_policy = eina_stringshare_add(param->s);
            else if (!strcmp(param->name, "vertical policy"))
-              mem->policy = eina_stringshare_add(param->s);
+              mem->v_policy = eina_stringshare_add(param->s);
            else if (!strcmp(param->name, "horizontal bounce"))
                  {
                         mem->h_bounce = param->i;
@@ -254,14 +226,16 @@ external_scroller_params_free(void *params)
 {
    Elm_Params_Scroller *mem = params;
 
-   if (mem->policy)
-      eina_stringshare_del(mem->policy);
+   if (mem->h_policy)
+      eina_stringshare_del(mem->h_policy);
+   if (mem->v_policy)
+      eina_stringshare_del(mem->v_policy);
    external_common_params_free(params);
 }
 
 static Edje_External_Param_Info external_scroller_params[] = {
-   EDJE_EXTERNAL_PARAM_INFO_CHOICE_FULL("horizontal policy", "auto", list_policy_choices),
-   EDJE_EXTERNAL_PARAM_INFO_CHOICE_FULL("vertical policy", "auto", list_policy_choices),
+   EDJE_EXTERNAL_PARAM_INFO_CHOICE_FULL("horizontal policy", "auto", scroller_policy_choices),
+   EDJE_EXTERNAL_PARAM_INFO_CHOICE_FULL("vertical policy", "auto", scroller_policy_choices),
    EDJE_EXTERNAL_PARAM_INFO_BOOL("horizontal bounce"),
    EDJE_EXTERNAL_PARAM_INFO_BOOL("vertical bounce"),
    EDJE_EXTERNAL_PARAM_INFO_SENTINEL