hermet pushed a commit to branch master.

commit d31bb65b3f8806902b45bb4540110d2764601330
Author: ChunEon Park <[email protected]>
Date:   Tue Apr 23 20:30:15 2013 +0900

    elementary/ctxpopup, hoversel, naviframe, multibuttonentry, popup, 
diskselector, list, menu, segment_control, toolbar  - support widget item 
language change
---
 ChangeLog                      |  5 +++++
 NEWS                           |  6 +++---
 src/lib/elc_ctxpopup.c         |  9 ++++++++-
 src/lib/elc_hoversel.c         | 15 +++++++++++++++
 src/lib/elc_multibuttonentry.c | 15 +++++++++++++++
 src/lib/elc_naviframe.c        | 14 ++++++++++++++
 src/lib/elc_popup.c            | 15 +++++++++++++++
 src/lib/elm_diskselector.c     | 15 +++++++++++++++
 src/lib/elm_list.c             |  9 ++++++++-
 src/lib/elm_menu.c             | 15 +++++++++++++++
 src/lib/elm_segment_control.c  | 15 +++++++++++++++
 src/lib/elm_toolbar.c          |  8 +++++++-
 12 files changed, 135 insertions(+), 6 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index eaec384..ccf5952 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1282,3 +1282,8 @@
 
         * Fix the scrolled entry in scroller is located wrong position when 
the cursor is changed.
         It is a scroller in scroller. In this case, it moved twice.
+
+2013-04-23  ChunEon Park
+
+        * Support language change for widget items (Ctxpopup, Hoversel, 
Naviframe, Diskselector, List,
+        Menu, Segment_Control, Toolbar, Popup, MultibuttonEntry)               
                                                                                
                                 
diff --git a/NEWS b/NEWS
index c182948..0ea0606 100644
--- a/NEWS
+++ b/NEWS
@@ -99,10 +99,10 @@ Improvements:
    * Naviframe works for H/W Back key event.
    * Naviframe is now supproting focus_direction.
    * Scroller decides whether the accelerator is on or not, depending on the 
velocity and the interval time of the flick event.
-   * Ctxpopup is now supproting focus_direction.
+       * Ctxpopup is now supproting focus_direction.
    * Don't try to pop the naviframe item multiple times.
-
-Fixes:
+   * Support language change for widget items (Ctxpopup, Hoversel, Naviframe, 
Diskselector, List, Menu, Segment_Control, Toolbar, Popup, MultibuttonEntry)    
                                                                                
                                          
+       Fixes:
 
    * Now elm_datetime_field_limit_set() can set year limits wihtout problems.
    * Fix re-order animation when it doesn't end correctly.
diff --git a/src/lib/elc_ctxpopup.c b/src/lib/elc_ctxpopup.c
index 503ac7d..f1d20d5 100644
--- a/src/lib/elc_ctxpopup.c
+++ b/src/lib/elc_ctxpopup.c
@@ -20,11 +20,18 @@ static const Evas_Smart_Cb_Description _smart_callbacks[] = 
{
 };
 
 static void
-_elm_ctxpopup_smart_translate(Eo *obj, void *_pd EINA_UNUSED, va_list *list)
+_elm_ctxpopup_smart_translate(Eo *obj, void *_pd, va_list *list)
 {
    Eina_Bool *ret = va_arg(*list, Eina_Bool *);
+   Elm_Ctxpopup_Smart_Data *sd = _pd;
+   Eina_List *l;
+   Elm_Ctxpopup_Item *it;
+
    evas_object_hide(obj);
 
+   EINA_LIST_FOREACH(sd->items, l, it)
+     elm_widget_item_translate(it);
+
    if (ret) *ret = EINA_TRUE;
 }
 
diff --git a/src/lib/elc_hoversel.c b/src/lib/elc_hoversel.c
index a19360c..701807a 100644
--- a/src/lib/elc_hoversel.c
+++ b/src/lib/elc_hoversel.c
@@ -17,6 +17,20 @@ static const Evas_Smart_Cb_Description _smart_callbacks[] = {
 };
 
 static void
+_elm_hoversel_smart_translate(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
+{
+   Eina_Bool *ret = va_arg(*list, Eina_Bool *);
+   Elm_Hoversel_Smart_Data *sd = _pd;
+   Elm_Hoversel_Item *it;
+   Eina_List *l;
+
+   EINA_LIST_FOREACH(sd->items, l, it)
+     elm_widget_item_translate(it);
+
+   if (ret) *ret = EINA_TRUE;
+}
+
+static void
 _elm_hoversel_smart_theme(Eo *obj, void *_pd EINA_UNUSED, va_list *list)
 {
    Eina_Bool *ret = va_arg(*list, Eina_Bool *);
@@ -544,6 +558,7 @@ _class_constructor(Eo_Class *klass)
            EO_OP_FUNC(EVAS_OBJ_SMART_ID(EVAS_OBJ_SMART_SUB_ID_HIDE), 
_elm_hoversel_smart_hide),
 
            EO_OP_FUNC(ELM_WIDGET_ID(ELM_WIDGET_SUB_ID_THEME), 
_elm_hoversel_smart_theme),
+           EO_OP_FUNC(ELM_WIDGET_ID(ELM_WIDGET_SUB_ID_TRANSLATE), 
_elm_hoversel_smart_translate),
            EO_OP_FUNC(ELM_WIDGET_ID(ELM_WIDGET_SUB_ID_PARENT_SET), 
_elm_hoversel_smart_parent_set),
 
            
EO_OP_FUNC(ELM_OBJ_BUTTON_ID(ELM_OBJ_BUTTON_SUB_ID_ADMITS_AUTOREPEAT_GET), 
_elm_hoversel_smart_admits_autorepeat_get),
diff --git a/src/lib/elc_multibuttonentry.c b/src/lib/elc_multibuttonentry.c
index 82d672f..cffda6a 100644
--- a/src/lib/elc_multibuttonentry.c
+++ b/src/lib/elc_multibuttonentry.c
@@ -37,6 +37,20 @@ static const Evas_Smart_Cb_Description _smart_callbacks[] = {
 };
 
 static void
+_elm_multibuttonentry_smart_translate(Eo *obj EINA_UNUSED, void *_pd, va_list 
*list)
+{
+   Eina_Bool *ret = va_arg(*list, Eina_Bool *);
+   Elm_Multibuttonentry_Smart_Data *sd = _pd;
+   Elm_Multibuttonentry_Item *it;
+   Eina_List *l;
+
+   EINA_LIST_FOREACH(sd->items, l, it)
+     elm_widget_item_translate(it);
+
+   if (ret) *ret = EINA_TRUE;
+}
+
+static void
 _elm_multibuttonentry_smart_theme(Eo *obj, void *_pd, va_list *list)
 {
    Eina_List *l;
@@ -2178,6 +2192,7 @@ _class_constructor(Eo_Class *klass)
         EO_OP_FUNC(EVAS_OBJ_SMART_ID(EVAS_OBJ_SMART_SUB_ID_DEL), 
_elm_multibuttonentry_smart_del),
 
         EO_OP_FUNC(ELM_WIDGET_ID(ELM_WIDGET_SUB_ID_THEME), 
_elm_multibuttonentry_smart_theme),
+        EO_OP_FUNC(ELM_WIDGET_ID(ELM_WIDGET_SUB_ID_TRANSLATE), 
_elm_multibuttonentry_smart_translate),
         EO_OP_FUNC(ELM_WIDGET_ID(ELM_WIDGET_SUB_ID_EVENT), 
_elm_multibuttonentry_smart_event),
         EO_OP_FUNC(ELM_WIDGET_ID(ELM_WIDGET_SUB_ID_ON_FOCUS), 
_elm_multibuttonentry_smart_on_focus),
         EO_OP_FUNC(ELM_WIDGET_ID(ELM_WIDGET_SUB_ID_FOCUS_NEXT_MANAGER_IS), 
_elm_multibuttonentry_smart_focus_next_manager_is),
diff --git a/src/lib/elc_naviframe.c b/src/lib/elc_naviframe.c
index c107c1b..543bde4 100644
--- a/src/lib/elc_naviframe.c
+++ b/src/lib/elc_naviframe.c
@@ -30,6 +30,19 @@ static const char SIG_CLICKED[] = "clicked";
 static void _on_item_back_btn_clicked(void *data, Evas_Object *obj, void 
*event_info __UNUSED__);
 
 static void
+_elm_naviframe_smart_translate(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
+{
+   Eina_Bool *ret = va_arg(*list, Eina_Bool *);
+   Elm_Naviframe_Smart_Data *sd = _pd;
+   Elm_Naviframe_Item *it;
+
+   EINA_INLIST_FOREACH(sd->stack, it)
+     elm_widget_item_translate(it);
+
+   if (ret) *ret = EINA_TRUE;
+}
+
+static void
 _item_content_del_cb(void *data,
                      Evas *e __UNUSED__,
                      Evas_Object *obj __UNUSED__,
@@ -2014,6 +2027,7 @@ _class_constructor(Eo_Class *klass)
         EO_OP_FUNC(ELM_WIDGET_ID(ELM_WIDGET_SUB_ID_FOCUS_DIRECTION), 
_elm_naviframe_smart_focus_direction),
 
         EO_OP_FUNC(ELM_WIDGET_ID(ELM_WIDGET_SUB_ID_THEME), 
_elm_naviframe_smart_theme),
+        EO_OP_FUNC(ELM_WIDGET_ID(ELM_WIDGET_SUB_ID_TRANSLATE), 
_elm_naviframe_smart_translate),
         EO_OP_FUNC(ELM_WIDGET_ID(ELM_WIDGET_SUB_ID_ACCESS), 
_elm_naviframe_smart_access),
         EO_OP_FUNC(ELM_WIDGET_ID(ELM_WIDGET_SUB_ID_EVENT), 
_elm_naviframe_smart_event),
 
diff --git a/src/lib/elc_popup.c b/src/lib/elc_popup.c
index 74b3ff3..8737b7b 100644
--- a/src/lib/elc_popup.c
+++ b/src/lib/elc_popup.c
@@ -27,6 +27,20 @@ static const Evas_Smart_Cb_Description _smart_callbacks[] = {
 static void  _on_content_del(void *data, Evas *e, Evas_Object *obj, void 
*event_info);
 
 static void
+_elm_popup_smart_translate(Eo *obj EINA_UNUSED, void *_pd EINA_UNUSED, va_list 
*list)
+{
+   Eina_Bool *ret = va_arg(*list, Eina_Bool *);
+   Elm_Popup_Smart_Data *sd = _pd;
+   Elm_Popup_Item *it;
+   Eina_List *l;
+
+   EINA_LIST_FOREACH(sd->items, l, it)
+      elm_widget_item_translate(it);
+
+   if (ret) *ret = EINA_TRUE;
+}
+
+static void
 _visuals_set(Evas_Object *obj)
 {
    ELM_POPUP_DATA_GET(obj, sd);
@@ -1857,6 +1871,7 @@ _class_constructor(Eo_Class *klass)
         EO_OP_FUNC(ELM_WIDGET_ID(ELM_WIDGET_SUB_ID_PARENT_SET), 
_elm_popup_smart_parent_set),
         EO_OP_FUNC(ELM_WIDGET_ID(ELM_WIDGET_SUB_ID_EVENT), 
_elm_popup_smart_event),
         EO_OP_FUNC(ELM_WIDGET_ID(ELM_WIDGET_SUB_ID_THEME), 
_elm_popup_smart_theme),
+        EO_OP_FUNC(ELM_WIDGET_ID(ELM_WIDGET_SUB_ID_TRANSLATE), 
_elm_popup_smart_translate),
         EO_OP_FUNC(ELM_WIDGET_ID(ELM_WIDGET_SUB_ID_FOCUS_NEXT_MANAGER_IS), 
_elm_popup_smart_focus_next_manager_is),
         EO_OP_FUNC(ELM_WIDGET_ID(ELM_WIDGET_SUB_ID_FOCUS_NEXT),  
_elm_popup_smart_focus_next),
         EO_OP_FUNC(ELM_WIDGET_ID(ELM_WIDGET_SUB_ID_ACCESS), 
_elm_popup_smart_access),
diff --git a/src/lib/elm_diskselector.c b/src/lib/elm_diskselector.c
index 568b9f5..a05ca54 100644
--- a/src/lib/elm_diskselector.c
+++ b/src/lib/elm_diskselector.c
@@ -37,6 +37,20 @@ static const Evas_Smart_Cb_Description _smart_callbacks[] = {
 };
 
 static void
+_elm_diskselector_smart_translate(Eo *obj EINA_UNUSED, void *_pd, va_list 
*list)
+{
+   Eina_Bool *ret = va_arg(*list, Eina_Bool *);
+   Elm_Diskselector_Smart_Data *sd = _pd;
+   Elm_Diskselector_Item *it;
+   Eina_List *l;
+
+   EINA_LIST_FOREACH(sd->items, l, it)
+     elm_widget_item_translate(it);
+
+   if (ret) *ret = EINA_TRUE;
+}
+
+static void
 _selected_item_indicate(Elm_Diskselector_Item *it)
 {
    Eina_List *l;
@@ -1968,6 +1982,7 @@ _class_constructor(Eo_Class *klass)
         EO_OP_FUNC(EVAS_OBJ_SMART_ID(EVAS_OBJ_SMART_SUB_ID_MOVE), 
_elm_diskselector_smart_move),
 
         EO_OP_FUNC(ELM_WIDGET_ID(ELM_WIDGET_SUB_ID_THEME), 
_elm_diskselector_smart_theme),
+        EO_OP_FUNC(ELM_WIDGET_ID(ELM_WIDGET_SUB_ID_TRANSLATE), 
_elm_diskselector_smart_translate),
         EO_OP_FUNC(ELM_WIDGET_ID(ELM_WIDGET_SUB_ID_EVENT), 
_elm_diskselector_smart_event),
         EO_OP_FUNC(ELM_WIDGET_ID(ELM_WIDGET_SUB_ID_ON_FOCUS), 
_elm_diskselector_smart_on_focus),
         EO_OP_FUNC(ELM_WIDGET_ID(ELM_WIDGET_SUB_ID_SUB_OBJECT_DEL), 
_elm_diskselector_smart_sub_object_del),
diff --git a/src/lib/elm_list.c b/src/lib/elm_list.c
index ee2841a..865af45 100644
--- a/src/lib/elm_list.c
+++ b/src/lib/elm_list.c
@@ -360,9 +360,16 @@ _elm_list_smart_event(Eo *obj, void *_pd, va_list *list)
 }
 
 static void
-_elm_list_smart_translate(Eo *obj, void *_pd EINA_UNUSED, va_list *list)
+_elm_list_smart_translate(Eo *obj, void *_pd, va_list *list)
 {
    Eina_Bool *ret = va_arg(*list, Eina_Bool *);
+   Elm_List_Smart_Data *sd = _pd;
+   Elm_List_Item *it;
+   Eina_List *l;
+
+   EINA_LIST_FOREACH(sd->items, l, it)
+     elm_widget_item_translate(it);
+
    evas_object_smart_callback_call(obj, SIG_LANG_CHANGED, NULL);
 
    if (ret) *ret = EINA_TRUE;
diff --git a/src/lib/elm_menu.c b/src/lib/elm_menu.c
index c42e3d0..8bcd290 100644
--- a/src/lib/elm_menu.c
+++ b/src/lib/elm_menu.c
@@ -15,6 +15,20 @@ static const Evas_Smart_Cb_Description _smart_callbacks[] = {
 };
 
 static void
+_elm_menu_smart_translate(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
+{
+   Eina_Bool *ret = va_arg(*list, Eina_Bool *);
+   Elm_Menu_Smart_Data *sd = _pd;
+   Elm_Menu_Item *it;
+   Eina_List *l;
+
+   EINA_LIST_FOREACH(sd->items, l, it)
+     elm_widget_item_translate(it);
+
+   if (ret) *ret = EINA_TRUE;
+}
+
+static void
 _item_del(Elm_Menu_Item *item)
 {
    Elm_Menu_Item *child;
@@ -1268,6 +1282,7 @@ _class_constructor(Eo_Class *klass)
         EO_OP_FUNC(EVAS_OBJ_SMART_ID(EVAS_OBJ_SMART_SUB_ID_SHOW), 
_elm_menu_smart_show),
 
         EO_OP_FUNC(ELM_WIDGET_ID(ELM_WIDGET_SUB_ID_THEME), 
_elm_menu_smart_theme),
+        EO_OP_FUNC(ELM_WIDGET_ID(ELM_WIDGET_SUB_ID_TRANSLATE), 
_elm_menu_smart_translate),
         EO_OP_FUNC(ELM_WIDGET_ID(ELM_WIDGET_SUB_ID_PARENT_SET), _parent_set),
         EO_OP_FUNC(ELM_WIDGET_ID(ELM_WIDGET_SUB_ID_PARENT_GET), _parent_get),
 
diff --git a/src/lib/elm_segment_control.c b/src/lib/elm_segment_control.c
index c10a953..c9eb8a5 100644
--- a/src/lib/elm_segment_control.c
+++ b/src/lib/elm_segment_control.c
@@ -15,6 +15,20 @@ static const Evas_Smart_Cb_Description _smart_callbacks[] = {
 };
 
 static void
+_elm_segment_control_smart_translate(Eo *obj EINA_UNUSED, void *_pd, va_list 
*list)
+{
+   Eina_Bool *ret = va_arg(*list, Eina_Bool *);
+   Elm_Segment_Control_Smart_Data *sd = _pd;
+   Elm_Segment_Item *it;
+   Eina_List *l;
+
+   EINA_LIST_FOREACH(sd->items, l, it)
+     elm_widget_item_translate(it);
+
+   if (ret) *ret = EINA_TRUE;
+}
+
+static void
 _elm_segment_control_smart_sizing_eval(Eo *obj, void *_pd, va_list *list 
EINA_UNUSED)
 {
    Evas_Coord minw = -1, minh = -1;
@@ -936,6 +950,7 @@ _class_constructor(Eo_Class *klass)
         EO_OP_FUNC(EVAS_OBJ_SMART_ID(EVAS_OBJ_SMART_SUB_ID_DEL), 
_elm_segment_control_smart_del),
 
         EO_OP_FUNC(ELM_WIDGET_ID(ELM_WIDGET_SUB_ID_THEME), 
_elm_segment_control_smart_theme),
+        EO_OP_FUNC(ELM_WIDGET_ID(ELM_WIDGET_SUB_ID_TRANSLATE), 
_elm_segment_control_smart_translate),
         EO_OP_FUNC(ELM_WIDGET_ID(ELM_WIDGET_SUB_ID_DISABLE), 
_elm_segment_control_smart_disable),
         EO_OP_FUNC(ELM_WIDGET_ID(ELM_WIDGET_SUB_ID_FOCUS_NEXT_MANAGER_IS), 
_elm_segment_control_smart_focus_next_manager_is),
         EO_OP_FUNC(ELM_WIDGET_ID(ELM_WIDGET_SUB_ID_FOCUS_NEXT), 
_elm_segment_control_smart_focus_next),
diff --git a/src/lib/elm_toolbar.c b/src/lib/elm_toolbar.c
index 777cfd5..96f1e50 100644
--- a/src/lib/elm_toolbar.c
+++ b/src/lib/elm_toolbar.c
@@ -1361,9 +1361,15 @@ _item_content_unset_hook(Elm_Object_Item *it,
 }
 
 static void
-_elm_toolbar_smart_translate(Eo *obj, void *_pd EINA_UNUSED, va_list *list)
+_elm_toolbar_smart_translate(Eo *obj, void *_pd, va_list *list)
 {
    Eina_Bool *ret = va_arg(*list, Eina_Bool *);
+   Elm_Toolbar_Smart_Data *sd = _pd;
+   Elm_Toolbar_Item *it;
+
+   EINA_INLIST_FOREACH(sd->items, it)
+     elm_widget_item_translate(it);
+
    evas_object_smart_callback_call(obj, SIG_LANG_CHANGED, NULL);
 
    if (ret) *ret = EINA_TRUE;

-- 

------------------------------------------------------------------------------
Try New Relic Now & We'll Send You this Cool Shirt
New Relic is the only SaaS-based application performance monitoring service 
that delivers powerful full stack analytics. Optimize and monitor your
browser, app, & servers with just a few lines of code. Try New Relic
and get this awesome Nerd Life shirt! http://p.sf.net/sfu/newrelic_d2d_apr

Reply via email to