Merge branch 'master' of 165.213.180.234:/git/slp/pkgs/elementary
authorSohyun Kim <anna1014.kim@samsung.com>
Wed, 1 Sep 2010 11:14:39 +0000 (20:14 +0900)
committerSohyun Kim <anna1014.kim@samsung.com>
Wed, 1 Sep 2010 11:14:39 +0000 (20:14 +0900)
src/lib/Elementary.h.in [changed mode: 0644->0755]
src/lib/elm_datefield.c

old mode 100644 (file)
new mode 100755 (executable)
index 137b091..8a68fb3
@@ -1274,11 +1274,11 @@ extern "C" {
    typedef struct _Elm_Segment_Item Elm_Segment_Item;
    EAPI Evas_Object *elm_segment_control_add(Evas_Object *parent);
    EAPI Elm_Segment_Item * elm_segment_control_add_segment(Evas_Object *obj, Evas_Object *icon, const char *label, Eina_Bool animate)__attribute__((deprecated));
-   EAPI Elm_Segment_Item *elm_segment_control_item_add(Evas_Object *obj, Evas_Object *icon, const char *label, Eina_Bool animate);\r
+   EAPI Elm_Segment_Item *elm_segment_control_item_add(Evas_Object *obj, Evas_Object *icon, const char *label, Eina_Bool animate);
    EAPI void         elm_segment_control_insert_segment_at(Evas_Object *obj, Evas_Object *icon, const char *label, unsigned int index, Eina_Bool animate)__attribute__((deprecated));
-   EAPI Elm_Segment_Item *elm_segment_control_item_insert_at(Evas_Object *obj, Evas_Object *icon, const char *label, unsigned int index, Eina_Bool animate);\r
+   EAPI Elm_Segment_Item *elm_segment_control_item_insert_at(Evas_Object *obj, Evas_Object *icon, const char *label, unsigned int index, Eina_Bool animate);
    EAPI Evas_Object *elm_segment_control_get_segment_at(Evas_Object *obj, unsigned int index);
-   EAPI void         elm_segment_control_item_selected_set(Elm_Segment_Item *item, Eina_Bool select);\r
+   EAPI void         elm_segment_control_item_selected_set(Elm_Segment_Item *item, Eina_Bool select);
    EAPI void         elm_segment_control_delete_segment(Evas_Object *obj, Elm_Segment_Item *item, Eina_Bool animate)__attribute__((deprecated));
    EAPI void         elm_segment_control_item_del(Evas_Object *obj, Elm_Segment_Item *item, Eina_Bool animate);
    EAPI void         elm_segment_control_delete_segment_at(Evas_Object *obj,  unsigned int index, Eina_Bool animate)__attribute__((deprecated));
@@ -1286,9 +1286,9 @@ extern "C" {
    EAPI const char  *elm_segment_control_get_segment_label_at(Evas_Object *obj, unsigned int index)__attribute__((deprecated));
    EAPI const char  *elm_segment_control_item_label_get(Evas_Object *obj, unsigned int index);
    EAPI Evas_Object *elm_segment_control_get_segment_icon_at(Evas_Object *obj, unsigned int index)__attribute__((deprecated));
-   EAPI Evas_Object *elm_segment_control_item_icon_get(Evas_Object *obj, unsigned int index);\r
+   EAPI Evas_Object *elm_segment_control_item_icon_get(Evas_Object *obj, unsigned int index);
    EAPI Elm_Segment_Item *elm_segment_control_selected_segment_get(const Evas_Object *obj, int *value)__attribute__((deprecated));
-   EAPI Elm_Segment_Item *elm_segment_control_item_selected_get(const Evas_Object *obj);\r
+   EAPI Elm_Segment_Item *elm_segment_control_item_selected_get(const Evas_Object *obj);
    EAPI int          elm_segment_control_get_segment_count(Evas_Object *obj)__attribute__((deprecated));
    EAPI int          elm_segment_control_item_count_get(Evas_Object *obj);
    EAPI Evas_Object *elm_segment_control_item_object_get(Elm_Segment_Item *it);
@@ -1837,7 +1837,7 @@ extern "C" {
    EAPI void elm_datefield_date_set(Evas_Object *obj, int year, int month, int day, int hour, int min);
    EAPI void elm_datefield_date_get(Evas_Object *obj, int *year, int *month, int *day, int *hour, int *min);
    EAPI void elm_datefield_time_mode_set(Evas_Object *obj, Eina_Bool mode);    
-
+   EAPI void elm_datefield_date_format_set(Evas_Object *obj, const char *fmt);
 
    /* titlebar */
    EAPI Evas_Object *elm_titlebar_add(Evas_Object *parent);
index 9840600..2ef2f76 100755 (executable)
@@ -23,6 +23,16 @@ enum {
        TIME_MAX
 };
 
+enum {
+       DATE_FORMAT_YYMMDD,
+       DATE_FORMAT_YYDDMM,
+       DATE_FORMAT_MMYYDD,
+       DATE_FORMAT_MMDDYY,
+       DATE_FORMAT_DDYYMM,
+       DATE_FORMAT_DDMMYY,
+       DATE_FORMAT_MAX
+};
+
 #define YEAR_MAX_LENGTH        4
 #define MONTH_MAX_LENGTH       3
 #define DAY_MAX_LENGTH         2
@@ -45,6 +55,7 @@ struct _Widget_Data
        int layout;
 
        int year, month, day, hour, min;
+       int date_format;
        Eina_Bool pm:1;
        Eina_Bool time_mode:1;
        Eina_Bool editing:1;
@@ -62,6 +73,7 @@ static void _signal_ampm_mouse_down(void *data, Evas_Object *obj, const char *em
 static void _signal_ampm_clicked(void *data, Evas_Object *obj, const char *emission, const char *source);
 static void _entry_focused_cb(void *data, Evas_Object *obj, void *event_info);
 static void _entry_unfocused_cb(void *data, Evas_Object *obj, void *event_info);
+static void _entry_key_up_cb(void *data, Evas *e , Evas_Object *obj , void *event_info);
 static int _imf_event_commit_cb(void *data, int type, void *event);
 
 static void _date_entry_add(Evas_Object *obj);
@@ -74,8 +86,7 @@ static int _maximum_day_get(int year, int month);
 static void
 _del_hook(Evas_Object *obj)
 {
-       ELM_CHECK_WIDTYPE(obj, widtype);
-       Widget_Data *wd = elm_widget_data_get(obj);
+       Widget_Data *wd = elm_widget_data_get(obj);
        if (!wd) return ;       
 
        ecore_event_handler_del(wd->handler);
@@ -86,8 +97,7 @@ _del_hook(Evas_Object *obj)
 static void
 _on_focus_hook(void *data, Evas_Object *obj)
 {
-       ELM_CHECK_WIDTYPE(obj, widtype);
-       Widget_Data *wd = elm_widget_data_get(obj);
+       Widget_Data *wd = elm_widget_data_get(obj);
        if (!wd || !wd->base) return ;  
 
        if (!elm_widget_focus_get(obj))
@@ -116,6 +126,9 @@ _theme_hook(Evas_Object *obj)
 
                for (i = 0; i < DATE_MAX; i++)
                        elm_object_style_set(wd->date[i], "datefield");
+
+               for (i = 0; i < TIME_MAX; i++)
+                       evas_object_hide(wd->time[i]);
        }
        else if (wd->layout == ELM_DATEFIELD_LAYOUT_TIME)
        {
@@ -123,6 +136,9 @@ _theme_hook(Evas_Object *obj)
 
                for (i = 0; i < TIME_MAX; i++)
                        elm_object_style_set(wd->time[i], "datefield");
+
+               for (i = 0; i < DATE_MAX; i++)
+                       evas_object_hide(wd->date[i]);
        }
 
        if (wd->layout == ELM_DATEFIELD_LAYOUT_DATEANDTIME || wd->layout == ELM_DATEFIELD_LAYOUT_DATE)
@@ -160,8 +176,7 @@ _sizing_eval(Evas_Object *obj)
 static void
 _signal_ampm_mouse_down(void *data, Evas_Object *obj, const char *emission, const char *source)
 {
-       ELM_CHECK_WIDTYPE(data, widtype);
-       Widget_Data *wd = elm_widget_data_get(data);
+       Widget_Data *wd = elm_widget_data_get(data);
        Evas_Object *focus_obj;
        
        if (!wd || !wd->base) return ;  
@@ -174,7 +189,6 @@ _signal_ampm_mouse_down(void *data, Evas_Object *obj, const char *emission, cons
 static void
 _signal_ampm_clicked(void *data, Evas_Object *obj, const char *emission, const char *source)
 {
-       ELM_CHECK_WIDTYPE(data, widtype);
        Widget_Data *wd = elm_widget_data_get(data);
        if (!wd || !wd->base) return ;  
 
@@ -195,13 +209,12 @@ _signal_ampm_clicked(void *data, Evas_Object *obj, const char *emission, const c
 static void
 _signal_rect_mouse_down(void *data, Evas_Object *obj, const char *emission, const char *source)
 {
-       ELM_CHECK_WIDTYPE(data, widtype);
-       Widget_Data *wd = elm_widget_data_get(data);
-       if (!wd || !wd->base) return ;
+       Widget_Data *wd = elm_widget_data_get(data);
+       if (!wd) return ;
 
-       if (!strcmp(source, "elm.rect.date.year.over") || !strcmp(source, "elm.rect.date.right.pad"))
+       if (!strcmp(source, "elm.rect.date.year.over"))
                elm_object_focus(wd->date[DATE_YEAR]);
-       else if (!strcmp(source, "elm.rect.date.month.over") || !strcmp(source, "elm.rect.date.left.pad"))
+       else if (!strcmp(source, "elm.rect.date.month.over"))
                elm_object_focus(wd->date[DATE_MON]);
        else if (!strcmp(source, "elm.rect.date.day.over"))
                elm_object_focus(wd->date[DATE_DAY]);
@@ -209,15 +222,49 @@ _signal_rect_mouse_down(void *data, Evas_Object *obj, const char *emission, cons
                elm_object_focus(wd->time[TIME_HOUR]);
        else if (!strcmp(source, "elm.rect.time.min.over"))
                elm_object_focus(wd->time[TIME_MIN]);
+       else if (!strcmp(source, "elm.rect.date.left.pad"))
+       {
+               switch (wd->date_format)
+               {
+                       case DATE_FORMAT_YYDDMM:
+                       case DATE_FORMAT_YYMMDD:
+                               elm_object_focus(wd->date[DATE_YEAR]);
+                               break;
+                       case DATE_FORMAT_MMDDYY:
+                       case DATE_FORMAT_MMYYDD:
+                               elm_object_focus(wd->date[DATE_MON]);
+                               break;
+                       case DATE_FORMAT_DDMMYY:
+                       case DATE_FORMAT_DDYYMM:
+                               elm_object_focus(wd->date[DATE_DAY]);
+               }
+       }
+       else if (!strcmp(source, "elm.rect.date.right.pad"))
+       {
+               switch (wd->date_format)
+               {
+                       case DATE_FORMAT_MMDDYY:
+                       case DATE_FORMAT_DDMMYY:
+                               elm_object_focus(wd->date[DATE_YEAR]);
+                               break;
+                       case DATE_FORMAT_DDYYMM:
+                       case DATE_FORMAT_YYDDMM:
+                               elm_object_focus(wd->date[DATE_MON]);
+                               break;
+                       case DATE_FORMAT_YYMMDD:
+                       case DATE_FORMAT_MMYYDD:
+                               elm_object_focus(wd->date[DATE_DAY]);
+               }
+       }
+
 }
 
 static void
 _entry_focused_cb(void *data, Evas_Object *obj, void *event_info)
 {
-       ELM_CHECK_WIDTYPE(data, widtype);
-       Widget_Data *wd = elm_widget_data_get(data);
-       if (!wd || !wd->base) return ;
-
+       Widget_Data *wd = elm_widget_data_get(data);
+       if (!wd || !wd->base) return;
        if (elm_widget_focus_get(data))
                edje_object_signal_emit(wd->base, "elm,state,focus,in", "elm");
 
@@ -236,14 +283,13 @@ _entry_focused_cb(void *data, Evas_Object *obj, void *event_info)
 static void
 _entry_unfocused_cb(void *data, Evas_Object *obj, void *event_info)
 {
-       ELM_CHECK_WIDTYPE(data, widtype);
-       Widget_Data *wd = elm_widget_data_get(data);
+       Widget_Data *wd = elm_widget_data_get(data);
        char str[YEAR_MAX_LENGTH+1] = {0,};
        int num = 0;
-       
-       if (!wd || !wd->base) return ;
 
-       wd->editing = FALSE;
+       if (!wd || !wd->base) return;
+       
+       wd->editing = FALSE;
 
        if (obj == wd->date[DATE_YEAR])
        {
@@ -330,28 +376,80 @@ _entry_unfocused_cb(void *data, Evas_Object *obj, void *event_info)
                elm_entry_entry_set(wd->time[TIME_MIN], str);
                wd->min = atoi(elm_entry_entry_get(wd->time[TIME_MIN]));
                edje_object_signal_emit(wd->base, "elm,state,min,focus,out", "elm");
-               edje_object_signal_emit(wd->base, "elm,state,focus,out", "elm");
        }
+
+       if (!elm_widget_focused_object_get(data))
+               edje_object_signal_emit(wd->base, "elm,state,focus,out", "elm");
+
 }
 
 static void 
 _entry_focus_move(Evas_Object *obj, Evas_Object *focus_obj)
 {
-       ELM_CHECK_WIDTYPE(obj, widtype);
-       Widget_Data *wd = elm_widget_data_get(obj);
-       if (!wd || !wd->base) return ;
+       Widget_Data *wd = elm_widget_data_get(obj);
 
+       if (!wd) return;
        if (focus_obj == wd->date[DATE_YEAR])
        {
-               if (wd->layout == ELM_DATEFIELD_LAYOUT_DATEANDTIME)
-                       elm_object_focus(wd->time[TIME_HOUR]);
-               else if (wd->layout == ELM_DATEFIELD_LAYOUT_DATE)
-                       elm_object_unfocus(wd->date[DATE_YEAR]);
+               switch (wd->date_format)
+               {
+                       case DATE_FORMAT_DDMMYY:
+                       case DATE_FORMAT_MMDDYY:
+                               if (wd->layout == ELM_DATEFIELD_LAYOUT_DATEANDTIME)
+                                       elm_object_focus(wd->time[TIME_HOUR]);
+                               else if (wd->layout == ELM_DATEFIELD_LAYOUT_DATE)
+                                       elm_object_unfocus(wd->date[DATE_YEAR]);
+                               break;
+                       case DATE_FORMAT_DDYYMM:
+                       case DATE_FORMAT_YYMMDD:
+                               elm_object_focus(wd->date[DATE_MON]);
+                               break;
+                       case DATE_FORMAT_MMYYDD:
+                       case DATE_FORMAT_YYDDMM:
+                               elm_object_focus(wd->date[DATE_DAY]);
+               }
        }
        else if (focus_obj == wd->date[DATE_MON])
-               elm_object_focus(wd->date[DATE_DAY]);
+       {
+               switch (wd->date_format)
+               {
+                       case DATE_FORMAT_DDYYMM:
+                       case DATE_FORMAT_YYDDMM:
+                               if (wd->layout == ELM_DATEFIELD_LAYOUT_DATEANDTIME)
+                                       elm_object_focus(wd->time[TIME_HOUR]);
+                               else if (wd->layout == ELM_DATEFIELD_LAYOUT_DATE)
+                                       elm_object_unfocus(wd->date[DATE_MON]);
+                               break;
+                       case DATE_FORMAT_DDMMYY:
+                       case DATE_FORMAT_MMYYDD:
+                               elm_object_focus(wd->date[DATE_YEAR]);
+                               break;
+                       case DATE_FORMAT_MMDDYY:
+                       case DATE_FORMAT_YYMMDD:
+                               elm_object_focus(wd->date[DATE_DAY]);
+               }
+       }
        else if (focus_obj == wd->date[DATE_DAY])
-               elm_object_focus(wd->date[DATE_YEAR]);
+       {
+               switch (wd->date_format)
+               {
+                       case DATE_FORMAT_YYMMDD:
+                       case DATE_FORMAT_MMYYDD:
+                               if (wd->layout == ELM_DATEFIELD_LAYOUT_DATEANDTIME)
+                                       elm_object_focus(wd->time[TIME_HOUR]);
+                               else if (wd->layout == ELM_DATEFIELD_LAYOUT_DATE)
+                                       elm_object_unfocus(wd->date[DATE_DAY]);
+                               break;
+                       case DATE_FORMAT_DDYYMM:
+                       case DATE_FORMAT_MMDDYY:
+                               elm_object_focus(wd->date[DATE_YEAR]);
+                               break;
+                       case DATE_FORMAT_DDMMYY:
+                       case DATE_FORMAT_YYDDMM:
+                               elm_object_focus(wd->date[DATE_MON]);
+               }
+       }
        else if (focus_obj == wd->time[TIME_HOUR])
                elm_object_focus(wd->time[TIME_MIN]);
        else if (focus_obj == wd->time[TIME_MIN])
@@ -388,9 +486,9 @@ _maximum_day_get(int year, int month)
 static Eina_Bool 
 _check_input_done(Evas_Object *obj, Evas_Object *focus_obj, int strlen)
 {
-       ELM_CHECK_WIDTYPE(obj, widtype);
-       Widget_Data *wd = elm_widget_data_get(obj);
-       if (!wd || !wd->base) return EINA_FALSE;
+       Widget_Data *wd = elm_widget_data_get(obj);
+
+       if (!wd) return EINA_FALSE;
 
        if (focus_obj == wd->date[DATE_YEAR] && strlen == YEAR_MAX_LENGTH)
                wd->editing = EINA_FALSE;
@@ -409,17 +507,25 @@ _check_input_done(Evas_Object *obj, Evas_Object *focus_obj, int strlen)
        return !wd->editing;
 }
 
+static void
+_entry_key_up_cb(void *data, Evas *e , Evas_Object *obj , void *event_info )
+{
+       Evas_Event_Key_Up *ev = (Evas_Event_Key_Up *) event_info;
+       if (!strcmp(ev->keyname, "BackSpace"))
+               elm_entry_entry_set(obj, "");
+}
+       
 static int 
 _imf_event_commit_cb(void *data, int type, void *event)
 {
-       ELM_CHECK_WIDTYPE(data, widtype);
-       Widget_Data *wd = elm_widget_data_get(data);
+       Widget_Data *wd = elm_widget_data_get(data);
        Ecore_IMF_Event_Commit *ev = (Ecore_IMF_Event_Commit *) event;
        Evas_Object *focus_obj;
        char str[YEAR_MAX_LENGTH+1] = {0,};
-
-       if (!wd || !wd->base) return ECORE_CALLBACK_RENEW;
-       if(!elm_widget_focus_get(data)) return ECORE_CALLBACK_RENEW;
+       
+       if (!wd) return ECORE_CALLBACK_RENEW;
+       if(!elm_widget_focus_get(data)) return ECORE_CALLBACK_RENEW;
        
        focus_obj = elm_widget_focused_object_get(data);
        if (!wd->editing) 
@@ -449,13 +555,12 @@ _imf_event_commit_cb(void *data, int type, void *event)
 static void
 _date_update(Evas_Object *obj)
 {
-       ELM_CHECK_WIDTYPE(obj, widtype);
        Widget_Data *wd = elm_widget_data_get(obj);
        char str[YEAR_MAX_LENGTH+1] = {0,};
 
        if (!wd || !wd->base) return;
-
-       sprintf(str, "%d", wd->year);
+       
+       sprintf(str, "%d", wd->year);
        elm_entry_entry_set(wd->date[DATE_YEAR], str);
 
        memset(str, 0, YEAR_MAX_LENGTH+1);
@@ -495,28 +600,24 @@ _date_update(Evas_Object *obj)
 static void 
 _date_entry_add(Evas_Object *obj)
 {
-       ELM_CHECK_WIDTYPE(obj, widtype);
        Widget_Data *wd = elm_widget_data_get(obj);
        int i;
-       
-       if (!wd) return ;       
 
+       if (!wd) return;        
+       
        for (i = 0; i < DATE_MAX; i++)
        {
                wd->date[i] = elm_entry_add(obj);
                elm_entry_context_menu_disabled_set(wd->date[i], EINA_TRUE);
-        if (i == DATE_MON)
-        {
-                   elm_entry_input_panel_layout_set(wd->date[i], ELM_INPUT_PANEL_LAYOUT_MONTH);
-        }
-        else
-        {
-            elm_entry_input_panel_layout_set(wd->date[i], ELM_INPUT_PANEL_LAYOUT_NUMBERONLY);
-        }
+               if (i == DATE_MON)
+                           elm_entry_input_panel_layout_set(wd->date[i], ELM_INPUT_PANEL_LAYOUT_MONTH);
+               else
+                   elm_entry_input_panel_layout_set(wd->date[i], ELM_INPUT_PANEL_LAYOUT_NUMBERONLY);
                evas_object_size_hint_weight_set(wd->date[i], EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
                evas_object_size_hint_align_set(wd->date[i], EVAS_HINT_FILL, EVAS_HINT_FILL);
                evas_object_smart_callback_add(wd->date[i], "focused", _entry_focused_cb, obj);
                evas_object_smart_callback_add(wd->date[i], "unfocused", _entry_unfocused_cb, obj);
+               //evas_object_event_callback_add(wd->date[i], EVAS_CALLBACK_KEY_UP, _entry_key_up_cb, obj);
                elm_widget_sub_object_add(obj, wd->date[i]);
        }
 
@@ -528,12 +629,11 @@ _date_entry_add(Evas_Object *obj)
 static void 
 _time_entry_add(Evas_Object *obj)
 {
-       ELM_CHECK_WIDTYPE(obj, widtype);
        Widget_Data *wd = elm_widget_data_get(obj);
        int i;
-       
-       if (!wd) return ;       
 
+       if (!wd) return;        
+       
        for (i = 0; i < TIME_MAX; i++)
        {
                wd->time[i] = elm_entry_add(obj);
@@ -544,6 +644,7 @@ _time_entry_add(Evas_Object *obj)
                evas_object_size_hint_align_set(wd->time[i], EVAS_HINT_FILL, EVAS_HINT_FILL);
                evas_object_smart_callback_add(wd->time[i], "focused", _entry_focused_cb, obj);
                evas_object_smart_callback_add(wd->time[i], "unfocused", _entry_unfocused_cb, obj);
+               //evas_object_event_callback_add(wd->time[i], EVAS_CALLBACK_KEY_UP, _entry_key_up_cb, obj);
                elm_widget_sub_object_add(obj, wd->time[i]);
        }
 }
@@ -601,6 +702,7 @@ elm_datefield_add(Evas_Object *parent)
        wd->layout = ELM_DATEFIELD_LAYOUT_DATEANDTIME;
        wd->editing = EINA_FALSE;
        wd->time_mode = EINA_TRUE;
+       wd->date_format = DATE_FORMAT_MMDDYY;
        
        _theme_hook(obj);
        
@@ -608,9 +710,9 @@ elm_datefield_add(Evas_Object *parent)
 }
 
 /**
- * Add a new datefield object
+ * set layout for the datefield
  *
- * @param parent The parent object
+ * @param obj The datefield object
  * @param layout set layout for date/time/dateandtime (default: ELM_DATEFIELD_LAYOUT_DATEANDTIME)
  *
  * @ingroup Datefield
@@ -621,7 +723,7 @@ elm_datefield_layout_set(Evas_Object *obj, Elm_Datefield_Layout layout)
        ELM_CHECK_WIDTYPE(obj, widtype);
        Widget_Data *wd = elm_widget_data_get(obj);
        
-       if (!wd) return ;       
+       if (!wd) return;
 
        if (wd->layout != layout)
        {
@@ -648,7 +750,7 @@ elm_datefield_date_set(Evas_Object *obj, int year, int month, int day, int hour,
        ELM_CHECK_WIDTYPE(obj, widtype);
        Widget_Data *wd = elm_widget_data_get(obj);
        
-       if (!wd) return ;       
+       if (!wd) return;
 
        wd->year = year;
        wd->month = month;
@@ -662,7 +764,7 @@ elm_datefield_date_set(Evas_Object *obj, int year, int month, int day, int hour,
 /**
  * Get selected date of the datefield
  *
- * @param obj The datepicker object
+ * @param obj The datefield object
  * @param year The pointer to the variable get the selected year
  * @param month The pointer to the variable get the selected month
  * @param day The pointer to the variable get the selected day
@@ -674,7 +776,9 @@ elm_datefield_date_set(Evas_Object *obj, int year, int month, int day, int hour,
 EAPI void
 elm_datefield_date_get(Evas_Object *obj, int *year, int *month, int *day, int *hour, int *min)
 {
+       ELM_CHECK_WIDTYPE(obj, widtype);
        Widget_Data *wd = elm_widget_data_get(obj);
+       
        if (!wd) return;
        
        if (year)
@@ -700,7 +804,9 @@ elm_datefield_date_get(Evas_Object *obj, int *year, int *month, int *day, int *h
 EAPI void
 elm_datefield_time_mode_set(Evas_Object *obj, Eina_Bool mode)
 {
+       ELM_CHECK_WIDTYPE(obj, widtype);
        Widget_Data *wd = elm_widget_data_get(obj);
+       
        if (!wd) return;
 
        if (wd->time_mode != mode) {
@@ -709,3 +815,34 @@ elm_datefield_time_mode_set(Evas_Object *obj, Eina_Bool mode)
        }
 }
 
+/**
+ * Set date format of datefield
+ *
+ * @param obj The datefield object
+ * @param fmt The date format, ex) yymmdd. Default value is mmddyy.
+ *
+ * @ingroup Datefield
+ */
+EAPI void
+elm_datefield_date_format_set(Evas_Object *obj, const char *fmt)
+{
+       char sig[32] = "elm,state,format,";
+       int i = 0, j;
+       Widget_Data *wd = elm_widget_data_get(obj);
+
+       if (!wd || !fmt) return;
+
+       j = strlen(sig);
+       while (j < 32) {
+               sig[j++] = tolower(fmt[i++]);
+       }
+
+       edje_object_signal_emit(wd->base, sig, "elm");
+
+       if (strstr(sig, "yymmdd")) wd->date_format = DATE_FORMAT_YYMMDD;
+       else if (strstr(sig, "yyddmm")) wd->date_format = DATE_FORMAT_YYDDMM;
+       else if (strstr(sig, "mmyydd")) wd->date_format = DATE_FORMAT_MMYYDD;
+       else if (strstr(sig, "mmddyy")) wd->date_format = DATE_FORMAT_MMDDYY;
+       else if (strstr(sig, "ddyymm")) wd->date_format = DATE_FORMAT_DDYYMM;
+       else if (strstr(sig, "ddmmyy")) wd->date_format = DATE_FORMAT_DDMMYY;
+}