Colorselector: Palette_items_get API added.
authorShilpa Singh <shilpa.singh@samsung.com>
Fri, 7 Feb 2014 14:30:01 +0000 (23:30 +0900)
committerCarsten Haitzler (Rasterman) <raster@rasterman.com>
Fri, 7 Feb 2014 14:35:13 +0000 (23:35 +0900)
Summary:
Summary:
Issue:Colorselector adds default palette items by reading colors
from config, application do not have any way to get that color list.
Solution: API added to get the palette's item list.
Signed-off by: Shilpa Singh(shilpa.singh@samsung.com)

Test Plan:
Test Plan: Create a list pointer and call palette_items_get API to get
the list of color items. Change the color of any item to confirm
whether the list has been returned correctly.

Eina_List *list = elm_colorselector_palette_items_get(cs);
Eina_List *list2 = eina_list_last(list);
Elm_Object_Item *color_item = eina_list_data_get(list2);
elm_colorselector_palette_item_color_set(color_item, 0, 0, 0, 255);

Reviewers: seoz, Hermet, raster

CC: govi, myoungwoon
Differential Revision: https://phab.enlightenment.org/D503

src/bin/test_colorselector.c
src/lib/elm_colorselector.c
src/lib/elm_colorselector_eo.h
src/lib/elm_colorselector_legacy.h

index fe1157f..411d7a0 100644 (file)
@@ -81,6 +81,8 @@ test_colorselector(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
                    void *event_info EINA_UNUSED)
 {
    Evas_Object *win, *bx, *bx2, *cs, *fr, *re, *bt;
+   const Eina_List *item_list, *last_item_list;
+   Elm_Object_Item *color_item;
    int r, g, b, a;
 
    win = elm_win_util_standard_add("colorselector", "ColorSelector");
@@ -124,6 +126,11 @@ test_colorselector(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
    elm_colorselector_palette_color_add(cs, 255, 255, 119, 255);
    elm_colorselector_palette_color_add(cs, 133, 100, 255, 255);
 
+   item_list = elm_colorselector_palette_items_get(cs);
+   last_item_list = eina_list_last(item_list);
+   color_item = eina_list_data_get(last_item_list);
+   elm_colorselector_palette_item_color_set(color_item, 255, 0, 0, 255);
+
    a = 180;
    r = 255;
    g = 160;
index 0809689..714cd79 100644 (file)
@@ -2149,6 +2149,23 @@ _palette_clear(Eo *obj, void *_pd, va_list *list EINA_UNUSED)
      sd->focused = ELM_COLORSELECTOR_COMPONENTS;
 }
 
+EAPI const Eina_List *
+elm_colorselector_palette_items_get(const Evas_Object *obj)
+{
+   ELM_COLORSELECTOR_CHECK(obj) NULL;
+   const Eina_List *color_list = NULL;
+   eo_do((Eo *) obj, elm_obj_colorselector_palette_items_get(&color_list));
+   return color_list;
+}
+
+static void
+_palette_items_get(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
+{
+   const Eina_List **ret = va_arg(*list, const Eina_List **);
+   Elm_Colorselector_Smart_Data *sd = _pd;
+   *ret = sd->items;
+}
+
 EAPI void
 elm_colorselector_palette_name_set(Evas_Object *obj,
                                    const char *palette_name)
@@ -2213,6 +2230,7 @@ _class_constructor(Eo_Class *klass)
         EO_OP_FUNC(ELM_OBJ_COLORSELECTOR_ID(ELM_OBJ_COLORSELECTOR_SUB_ID_MODE_GET), _mode_get),
         EO_OP_FUNC(ELM_OBJ_COLORSELECTOR_ID(ELM_OBJ_COLORSELECTOR_SUB_ID_PALETTE_COLOR_ADD), _palette_color_add),
         EO_OP_FUNC(ELM_OBJ_COLORSELECTOR_ID(ELM_OBJ_COLORSELECTOR_SUB_ID_PALETTE_CLEAR), _palette_clear),
+        EO_OP_FUNC(ELM_OBJ_COLORSELECTOR_ID(ELM_OBJ_COLORSELECTOR_SUB_ID_PALETTE_ITEMS_GET), _palette_items_get),
         EO_OP_FUNC(ELM_OBJ_COLORSELECTOR_ID(ELM_OBJ_COLORSELECTOR_SUB_ID_PALETTE_NAME_SET), _palette_name_set),
         EO_OP_FUNC(ELM_OBJ_COLORSELECTOR_ID(ELM_OBJ_COLORSELECTOR_SUB_ID_PALETTE_NAME_GET), _palette_name_get),
         EO_OP_FUNC_SENTINEL
@@ -2231,6 +2249,7 @@ static const Eo_Op_Description op_desc[] = {
      EO_OP_DESCRIPTION(ELM_OBJ_COLORSELECTOR_SUB_ID_MODE_GET, "Get Colorselector's mode."),
      EO_OP_DESCRIPTION(ELM_OBJ_COLORSELECTOR_SUB_ID_PALETTE_COLOR_ADD, "Add a new color item to palette."),
      EO_OP_DESCRIPTION(ELM_OBJ_COLORSELECTOR_SUB_ID_PALETTE_CLEAR, "Clear the palette items."),
+     EO_OP_DESCRIPTION(ELM_OBJ_COLORSELECTOR_SUB_ID_PALETTE_ITEMS_GET, "Get palette's item list"),
      EO_OP_DESCRIPTION(ELM_OBJ_COLORSELECTOR_SUB_ID_PALETTE_NAME_SET, "Set current palette's name."),
      EO_OP_DESCRIPTION(ELM_OBJ_COLORSELECTOR_SUB_ID_PALETTE_NAME_GET, "Get current palette's name."),
      EO_OP_DESCRIPTION_SENTINEL
index 93ddc4c..b7ac81a 100644 (file)
@@ -12,6 +12,7 @@ enum
    ELM_OBJ_COLORSELECTOR_SUB_ID_MODE_GET,
    ELM_OBJ_COLORSELECTOR_SUB_ID_PALETTE_COLOR_ADD,
    ELM_OBJ_COLORSELECTOR_SUB_ID_PALETTE_CLEAR,
+   ELM_OBJ_COLORSELECTOR_SUB_ID_PALETTE_ITEMS_GET,
    ELM_OBJ_COLORSELECTOR_SUB_ID_PALETTE_NAME_SET,
    ELM_OBJ_COLORSELECTOR_SUB_ID_PALETTE_NAME_GET,
    ELM_OBJ_COLORSELECTOR_SUB_ID_LAST
@@ -114,6 +115,18 @@ enum
 #define elm_obj_colorselector_palette_clear() ELM_OBJ_COLORSELECTOR_ID(ELM_OBJ_COLORSELECTOR_SUB_ID_PALETTE_CLEAR)
 
 /**
+ * @def elm_obj_colorselector_palette_items_get
+ * @since 1.9
+ *
+ * Get list of palette items.
+ *
+ * @param[out] ret
+ *
+ * @ingroup Colorselector
+ */
+#define elm_obj_colorselector_palette_items_get(ret) ELM_OBJ_COLORSELECTOR_ID(ELM_OBJ_COLORSELECTOR_SUB_ID_PALETTE_ITEMS_GET), EO_TYPECHECK(const Eina_List **, ret)
+
+/**
  * @def elm_obj_colorselector_palette_name_set
  * @since 1.8
  *
index 5165fa4..b366056 100644 (file)
@@ -80,6 +80,21 @@ EAPI Elm_Object_Item *elm_colorselector_palette_color_add(Evas_Object *obj, int
 EAPI void elm_colorselector_palette_clear(Evas_Object *obj);
 
 /**
+ * Get list of palette items.
+ *
+ * @param obj The Colorselector object
+ * @return The list of color palette items.
+ *
+ * Note That palette item list is internally managed by colorselector widget and
+ * it should not be freed/modified by application.
+ *
+ * @since 1.9
+ *
+ * @ingroup Colorselector
+ */
+EAPI const Eina_List *elm_colorselector_palette_items_get(const Evas_Object *obj);
+
+/**
  * Set current palette's name
  *
  * @param obj The Colorselector object