[edje_external] Scroller, warning removed.
authorPrince Kr Dubey <prince.dubey@samsung.com>
Fri, 12 Nov 2010 10:33:20 +0000 (19:33 +0900)
committerPrince Kr Dubey <prince.dubey@samsung.com>
Fri, 12 Nov 2010 10:33:20 +0000 (19:33 +0900)
data/edje_externals/Makefile.am
data/edje_externals/icons.edc
src/edje_externals/elm_scroller.c
src/lib/Elementary.h.in
src/lib/elm_scroller.c

index ef45da4..79eebc8 100644 (file)
@@ -23,12 +23,14 @@ ico_hoversel.png \
 ico_icon.png \
 ico_list.png \
 ico_map.png \
+ico_nocontents.png \
 ico_notepad.png \
 ico_page_control.png \
 ico_photocam.png \
 ico_progressbar.png \
 ico_radio.png \
 ico_scrolled_entry.png \
+ico_scroller.png \
 ico_slider.png \
 ico_slideshow.png \
 ico_spinner.png \
index 4a7983b..ca79d34 100644 (file)
@@ -31,6 +31,7 @@ ICON("photocam")
 ICON("progressbar")
 ICON("radio")
 ICON("scrolled_entry")
+ICON("scroller")
 ICON("searchbar")
 ICON("slider")
 ICON("slideshow")
index d0f4a3f..925753b 100644 (file)
@@ -1,8 +1,11 @@
 #include "private.h"
+#include <assert.h>
 
-typedef struct _Elm_Params_Scroller
-{
+typedef struct _Elm_Params_Scroller Elm_Params_Scroller;
+
+struct _Elm_Params_Scroller {
    Elm_Params base;
+   Evas_Object *content;
    const char *h_policy;
    const char *v_policy;
    Eina_Bool bounce_exist: 1;
@@ -10,7 +13,7 @@ typedef struct _Elm_Params_Scroller
    Eina_Bool h_bounce_exists:1;
    Eina_Bool v_bounce:1;
    Eina_Bool v_bounce_exists:1;
-}Elm_Params_Scroller;
+};
 
 static const char* scroller_policy_choices[] = {"auto", "on", "off", NULL};
 
@@ -68,6 +71,9 @@ external_scroller_state_set(void *data __UNUSED__, Evas_Object *obj, const void
            else
                   elm_scroller_bounce_set(obj, h_bounce, p->v_bounce);
         }
+   if (p->content) {
+   elm_scroller_content_set(obj, p->content);
+   }
 }
 
 static Eina_Bool
@@ -93,7 +99,7 @@ external_scroller_param_set(void *data __UNUSED__, Evas_Object *obj, const Edje_
            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);
+             v_policy = _scroller_policy_setting_get(param->s);
 
              if (v_policy == ELM_SCROLLER_POLICY_LAST) return EINA_FALSE;
              elm_scroller_policy_set(obj, policy_h, v_policy);
@@ -118,6 +124,15 @@ external_scroller_param_set(void *data __UNUSED__, Evas_Object *obj, const Edje_
                     return EINA_TRUE;
                  }
         }
+        if (!strcmp(param->name, "content")
+                       && param->type == EDJE_EXTERNAL_PARAM_TYPE_STRING)
+          {
+                 Evas_Object *content = external_common_param_edje_object_get(obj, param);
+                 if ((strcmp(param->s, "")) && (!content))
+                        return EINA_FALSE;
+                 elm_scroller_content_set(obj, content);
+                 return EINA_TRUE;
+          }
 
    ERR("unknown parameter '%s' of type '%s'",
        param->name, edje_external_param_type_str(param->type));
@@ -175,6 +190,11 @@ external_scroller_param_get(void *data __UNUSED__, const Evas_Object *obj, Edje_
                 return EINA_TRUE;
              }
      }
+   if (!strcmp(param->name, "content"))
+        {
+               /* not easy to get content name back from live object */
+               return EINA_FALSE;
+        }
 
    ERR("unknown parameter '%s' of type '%s'",
        param->name, edje_external_param_type_str(param->type));
@@ -209,6 +229,8 @@ external_scroller_params_parse(void *data, Evas_Object *obj, const Eina_List *pa
                         mem->v_bounce = param->i;
                         mem->v_bounce_exists = EINA_TRUE;
                  }
+               if (!strcmp(param->name, "content"))
+                  mem->content = external_common_param_edje_object_get(obj, param);
      }
 
    return mem;
@@ -217,7 +239,10 @@ external_scroller_params_parse(void *data, Evas_Object *obj, const Eina_List *pa
 static Evas_Object *external_scroller_content_get(void *data __UNUSED__,
                const Evas_Object *obj, const char *content)
 {
-       ERR("so content");
+       if (!strcmp(content, "content"))
+               return elm_scroller_content_get(obj);
+
+       ERR("unknown content '%s'", content);
        return NULL;
 }
 
@@ -234,10 +259,12 @@ external_scroller_params_free(void *params)
 }
 
 static Edje_External_Param_Info external_scroller_params[] = {
+   DEFINE_EXTERNAL_COMMON_PARAMS,
    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_STRING("content"),
    EDJE_EXTERNAL_PARAM_INFO_SENTINEL
 };
 
index e0c15e2..80ab213 100644 (file)
@@ -514,6 +514,7 @@ extern "C" {
 
    EAPI Evas_Object *elm_scroller_add(Evas_Object *parent);
    EAPI void         elm_scroller_content_set(Evas_Object *obj, Evas_Object *child);
+   EAPI Evas_Object *elm_scroller_content_get(const Evas_Object *obj);
    EAPI Evas_Object *elm_scroller_content_unset(Evas_Object *obj);
    EAPI void         elm_scroller_custom_widget_base_theme_set(Evas_Object *obj, const char *widget, const char *base);
    EAPI void         elm_scroller_content_min_limit(Evas_Object *obj, Eina_Bool w, Eina_Bool h);
index e4d004e..1d60438 100644 (file)
@@ -393,6 +393,25 @@ elm_scroller_content_set(Evas_Object *obj, Evas_Object *content)
 }
 
 /**
+ * Get the content of the scroller widget
+ *
+ * Return the content object which is set for this widget
+ *
+ * @param obj The slider object
+ * @return The content that is being used
+ *
+ * @ingroup Scroller
+ */
+EAPI Evas_Object *
+elm_scroller_content_get(const Evas_Object *obj)
+{
+   ELM_CHECK_WIDTYPE(obj, widtype) NULL;
+   Widget_Data *wd = elm_widget_data_get(obj);
+   if (!wd) return NULL;
+   return wd->content;
+}
+
+/**
  * Unset the content of the scroller widget
  *
  * Unparent and return the content object which was set for this widget
@@ -607,6 +626,24 @@ elm_scroller_bounce_set(Evas_Object *obj, Eina_Bool h_bounce, Eina_Bool v_bounce
 }
 
 /**
+ * Get the bounce mode
+ *
+ * @param obj The Scroller object
+ * @param h_bounce Allow bounce horizontally
+ * @param v_bounce Allow bounce vertically
+ *
+ * @ingroup Scroller
+ */
+EAPI void
+elm_scroller_bounce_get(const Evas_Object *obj, Eina_Bool *h_bounce, Eina_Bool *v_bounce)
+{
+   ELM_CHECK_WIDTYPE(obj, widtype);
+   Widget_Data *wd = elm_widget_data_get(obj);
+   if (!wd) return;
+   elm_smart_scroller_bounce_allow_get(wd->scr, h_bounce, v_bounce);
+}
+
+/**
  * Set scroll page size relative to viewport size
  *
  * The scroller is sapale of limiting scrolling by the user to "pages". That