[elm_multibuttonentry.c]modify label part elm_label to edje text
authordeasung.kim <deasung.kim@samsung.com>
Fri, 8 Apr 2011 08:10:12 +0000 (17:10 +0900)
committerdeasung.kim <deasung.kim@samsung.com>
Fri, 8 Apr 2011 09:19:53 +0000 (18:19 +0900)
src/lib/elm_multibuttonentry.c

index 900dc6f..fbd7e4e 100644 (file)
@@ -46,7 +46,6 @@ typedef struct _Widget_Data Widget_Data;
 struct _Widget_Data {\r
    Evas_Object *base;\r
    Evas_Object *box;\r
-   Evas_Object *rect;\r
    Evas_Object *entry;\r
    Evas_Object *label;\r
    Evas_Object *guidetext;\r
@@ -105,7 +104,6 @@ _del_hook(Evas_Object *obj)
      }\r
    wd->current = NULL;\r
 \r
-   if (wd->rect) evas_object_del (wd->rect);\r
    if (wd->entry) evas_object_del (wd->entry);\r
    if (wd->label) evas_object_del (wd->label);\r
    if (wd->guidetext) evas_object_del (wd->guidetext);\r
@@ -305,14 +303,6 @@ _contracted_state_set(Evas_Object *obj, int contracted)
         // pack buttons only 1line\r
         w = wd->w_box;\r
 \r
-        if (wd->rect)\r
-          {\r
-             elm_box_pack_end(wd->box, wd->rect);\r
-             evas_object_size_hint_min_get(wd->rect, &w_tmp, NULL);\r
-             w -= w_tmp;\r
-             w -= box_inner_item_width_padding;\r
-          }\r
-\r
         if (wd->label)\r
           {\r
              elm_box_pack_end(wd->box, wd->label);\r
@@ -445,7 +435,6 @@ _contracted_state_set(Evas_Object *obj, int contracted)
 \r
         // pack buttons only 1line\r
 \r
-        if (wd->rect) elm_box_pack_end(wd->box, wd->rect);\r
         if (wd->label) elm_box_pack_end(wd->box, wd->label);\r
 \r
         // pack remain btns\r
@@ -473,33 +462,23 @@ _contracted_state_set(Evas_Object *obj, int contracted)
 static void\r
 _view_update(Evas_Object *obj)\r
 {\r
-   Evas_Coord room = 0, w = 0;\r
+   Evas_Coord width = 1, height = 1;\r
    Widget_Data *wd = elm_widget_data_get(obj);\r
    if (!wd || !wd->box || !wd->entry || !(wd->w_box > 0)) return;\r
 \r
-   room = wd->w_box;\r
-   room -= MIN_W_ENTRY;\r
-\r
-   if (wd->rect)\r
-     {\r
-        evas_object_size_hint_min_get (wd->rect, &w, NULL);\r
-        room -= w;\r
-     }\r
-\r
    // update label\r
    if (wd->label)\r
      {\r
         elm_box_unpack(wd->box, wd->label);\r
-        if (wd->rect) elm_box_pack_after (wd->box, wd->label, wd->rect);\r
-        else elm_box_pack_start(wd->box, wd->label);\r
-        evas_object_show(wd->label);\r
-        elm_label_wrap_width_set(wd->label, room);\r
-        evas_object_size_hint_min_get(wd->label, &w, NULL);\r
-        room -= w;\r
+        elm_box_pack_start(wd->box, wd->label);\r
+        evas_object_size_hint_min_get(wd->label, &width, &height);\r
      }\r
 \r
    if (wd->guidetext)\r
-     evas_object_size_hint_min_set(wd->guidetext, room, 0);\r
+     {\r
+        Evas_Coord guide_text_width = wd->w_box - width;\r
+        evas_object_size_hint_min_set(wd->guidetext, guide_text_width, height);\r
+     }\r
 \r
    // update buttons in contracted mode\r
    if (wd->contracted == 1)\r
@@ -516,19 +495,37 @@ static void
 _set_label(Evas_Object *obj, const char* str)\r
 {\r
    Widget_Data *wd = elm_widget_data_get(obj);\r
-   if (!wd || !str)   return;\r
+   if (!wd || !str) return;\r
 \r
-   if (!wd->label)\r
-     {\r
-        if (! (wd->label = elm_label_add (obj))) return;\r
-        elm_object_style_set(wd->label, "extended/multibuttonentry_default");\r
-        elm_label_ellipsis_set(wd->label, EINA_TRUE);\r
-        elm_label_text_align_set(wd->label, "left");\r
-        evas_object_size_hint_weight_set(wd->label, 0.0, EVAS_HINT_EXPAND);\r
-        evas_object_size_hint_align_set(wd->label, EVAS_HINT_FILL, EVAS_HINT_FILL);\r
-     }\r
+   if (wd->label)\r
+   {\r
+      Evas_Coord width, height, sum_width = 0;\r
+      evas_object_size_hint_min_set(wd->label, 0, 0);\r
+      evas_object_resize(wd->label, 0, 0);\r
+      edje_object_part_text_set(wd->label, "mbe.label", str);\r
 \r
-   if (wd->label) elm_label_label_set(wd->label, str);\r
+      if (!strcmp(str, ""))\r
+        {\r
+           /* FIXME: not work yet */\r
+           edje_object_signal_emit(wd->label, "elm,mbe,clear_text", "");\r
+           edje_object_part_geometry_get(wd->label, "mbe.label", NULL, NULL, &width, &height);\r
+           sum_width += width;\r
+        }\r
+      else\r
+        {\r
+           edje_object_signal_emit(wd->label, "elm,mbe,set_text", "");\r
+           edje_object_part_geometry_get(wd->label, "mbe.label", NULL, NULL, &width, &height);\r
+           sum_width += width;\r
+\r
+           edje_object_part_geometry_get(wd->label, "mbe.label.left.padding", NULL, NULL, &width, NULL);\r
+           sum_width += width;\r
+\r
+           edje_object_part_geometry_get(wd->label, "mbe.label.right.padding", NULL, NULL, &width, NULL);\r
+           sum_width += width;\r
+        }\r
+      evas_object_size_hint_min_set(wd->label, sum_width, height);\r
+   }\r
+   evas_object_show(wd->label);\r
    _view_update(obj);\r
 }\r
 \r
@@ -778,7 +775,6 @@ _add_button_item(Evas_Object *obj, const char *str, Multibuttonentry_Pos pos, co
              case MULTIBUTONENTRY_POS_START:\r
                 wd->items = eina_list_prepend(wd->items, item);\r
                 if(wd->label) elm_box_pack_after(wd->box, btn, wd->label);\r
-                else if(wd->rect) elm_box_pack_after(wd->box, btn, wd->rect);\r
                 else elm_box_pack_start(wd->box, btn);\r
                 _view_update(obj);\r
                 break;\r
@@ -882,18 +878,11 @@ _view_init(Evas_Object *obj)
         edje_object_part_swallow(wd->base, "box.swallow", wd->box);\r
      }\r
 \r
-   if (!wd->rect)\r
+   if (!wd->label)\r
      {\r
-        Evas_Coord w, h;\r
-        if (! (wd->rect = edje_object_add (evas_object_evas_get (obj)))) return;\r
-        _elm_theme_object_set(obj, wd->rect, "multibuttonentry", "rect", elm_widget_style_get(obj));\r
-        elm_widget_sub_object_add(obj, wd->rect);\r
-        edje_object_part_geometry_get(wd->rect, "elm.base", NULL, NULL, &w, &h);\r
-        evas_object_size_hint_min_set(wd->rect, w, h);\r
-        evas_object_size_hint_weight_set(wd->rect, 0.0, EVAS_HINT_EXPAND);\r
-        evas_object_size_hint_align_set(wd->rect, EVAS_HINT_FILL, EVAS_HINT_FILL);\r
-        if (wd->box)   elm_box_pack_start (wd->box, wd->rect);\r
-        evas_object_show(wd->rect);\r
+        if (!(wd->label = edje_object_add(evas_object_evas_get(obj)))) return;\r
+        _elm_theme_object_set(obj, wd->label, "multibuttonentry", "label", elm_widget_style_get(obj));\r
+        _set_label(obj, "");\r
      }\r
 \r
    if (!wd->entry)\r
@@ -1016,7 +1005,7 @@ elm_multibuttonentry_label_get(Evas_Object *obj)
    ELM_CHECK_WIDTYPE(obj, widtype) NULL;\r
    Widget_Data *wd = elm_widget_data_get(obj);\r
    if (!wd) return NULL;\r
-   if (wd->label) return elm_label_label_get(wd->label);\r
+   if (wd->label) return edje_object_part_text_get(wd->guidetext, "elm.text");\r
    return NULL;\r
 }\r
 \r
@@ -1051,7 +1040,7 @@ elm_multibuttonentry_guide_text_get(Evas_Object *obj)
    ELM_CHECK_WIDTYPE(obj, widtype) NULL;\r
    Widget_Data *wd = elm_widget_data_get(obj);\r
    if (!wd)   return NULL;\r
-   if (wd->guidetext) return elm_label_label_get(wd->guidetext);\r
+   if (wd->guidetext) return edje_object_part_text_get(wd->guidetext, "elm.text");\r
    return NULL;\r
 }\r
 \r