{0,12,24,36,47,59,70,82,93,105,116,128,139,151,163,175,186,198,209,221,232,244,255,267,278,290,302,314,325,337,349}};
// for accessibility
+static Eina_Bool _accessibility_datetime_ampm_gesutre_cb(void *data, Elm_Atspi_Gesture_Info gesture_info, Evas_Object *obj);
static void _accessibility_datetime_radio_highlighted_cb(void *data, Evas_Object *obj, void *event_info);
//
0.25, 0.46,
0.45, 1.0);
}
+ // for Accessibility
+ else if (elm_atspi_bridge_utils_is_screen_reader_enabled() && angle == -1.0f) // Do not display circle object(indicator bar in datetime)
+ {
+ _eext_circle_object_item_angle_offset_set(item, 0);
+ _eext_circle_object_item_angle_set(item, 0);
+ }
+ //
else
{
_eext_circle_object_item_angle_offset_set(item, angle -(mark_radius / 2));
elm_datetime_value_get(datetime, &t);
radio = _eext_circle_object_datetime_selected_field_object_get(datetime);
- data->current_type = elm_radio_state_value_get(radio);
- data->rotary_angle = eext_circle_object_angle_get(datetime);
-
- switch (data->current_type)
+ if (radio)
{
- case ELM_DATETIME_YEAR:
- obj->bg_image_index = 5;
- picker_angle = (double)(picker_mark_angle_year[(int)((t.tm_year + 1900) % PICKER_MARK_PARTITION_COUNT_YEAR)]);
- _eext_circle_object_datetime_picker_mark_angle_set(obj, picker_angle, anim);
- break;
- case ELM_DATETIME_MONTH:
- obj->bg_image_index = 4;
- picker_angle = (double)((t.tm_mon) * PICKER_MARK_ANGLE_MONTH);
- _eext_circle_object_datetime_picker_mark_angle_set(obj, picker_angle, anim);
- break;
- case ELM_DATETIME_DATE:
- max_day = _max_days_get(t.tm_year, t.tm_mon);
- obj->bg_image_index = max_day % 28;
- picker_angle = (double)(picker_mark_angle_day[max_day - MIN_DAYS_IN_MONTH][(t.tm_mday > max_day ? max_day:t.tm_mday) - 1]);
- _eext_circle_object_datetime_picker_mark_angle_set(obj, picker_angle, anim);
- break;
- case ELM_DATETIME_HOUR:
- picker_angle = (double)((t.tm_hour) * PICKER_MARK_ANGLE_HOUR);
- _eext_circle_object_datetime_picker_mark_angle_set(obj, picker_angle, anim);
- obj->bg_image_index = 6;
- break;
- case ELM_DATETIME_MINUTE:
- picker_angle = (double)(t.tm_min * PICKER_MARK_ANGLE_MIN);
- _eext_circle_object_datetime_picker_mark_angle_set(obj, picker_angle, anim);
- obj->bg_image_index = 6;
- break;
- case ELM_DATETIME_AMPM:
- default:
- break;
- }
+ data->current_type = elm_radio_state_value_get(radio);
+ data->rotary_angle = eext_circle_object_angle_get(datetime);
- _eext_circle_object_changed(obj);
+ switch (data->current_type)
+ {
+ case ELM_DATETIME_YEAR:
+ obj->bg_image_index = 5;
+ picker_angle = (double)(picker_mark_angle_year[(int)((t.tm_year + 1900) % PICKER_MARK_PARTITION_COUNT_YEAR)]);
+ _eext_circle_object_datetime_picker_mark_angle_set(obj, picker_angle, anim);
+ break;
+ case ELM_DATETIME_MONTH:
+ obj->bg_image_index = 4;
+ picker_angle = (double)((t.tm_mon) * PICKER_MARK_ANGLE_MONTH);
+ _eext_circle_object_datetime_picker_mark_angle_set(obj, picker_angle, anim);
+ break;
+ case ELM_DATETIME_DATE:
+ max_day = _max_days_get(t.tm_year, t.tm_mon);
+ obj->bg_image_index = max_day % 28;
+ picker_angle = (double)(picker_mark_angle_day[max_day - MIN_DAYS_IN_MONTH][(t.tm_mday > max_day ? max_day:t.tm_mday) - 1]);
+ _eext_circle_object_datetime_picker_mark_angle_set(obj, picker_angle, anim);
+ break;
+ case ELM_DATETIME_HOUR:
+ picker_angle = (double)((t.tm_hour) * PICKER_MARK_ANGLE_HOUR);
+ _eext_circle_object_datetime_picker_mark_angle_set(obj, picker_angle, anim);
+ obj->bg_image_index = 6;
+ break;
+ case ELM_DATETIME_MINUTE:
+ picker_angle = (double)(t.tm_min * PICKER_MARK_ANGLE_MIN);
+ _eext_circle_object_datetime_picker_mark_angle_set(obj, picker_angle, anim);
+ obj->bg_image_index = 6;
+ break;
+ default:
+ break;
+ }
+ _eext_circle_object_changed(obj);
+ }
}
/**
{
Eext_Circle_Object *circle_obj = (Eext_Circle_Object *)data;
Eext_Circle_Object_Datetime_Data *widget_data = (Eext_Circle_Object_Datetime_Data *)circle_obj->widget_data;
-
_eext_circle_object_datetime_current_type_update(circle_obj, EINA_TRUE);
/**
* FIXME(171030): Comment this function out because eext_circle_object_value_set is not applied to angle.
{
Eext_Circle_Object *circle_obj = (Eext_Circle_Object *)data;
Evas_Object *selected_radio;
+ Eext_Circle_Object_Datetime_Data *widget_data = (Eext_Circle_Object_Datetime_Data *)circle_obj->widget_data;
+ //for accessibility
+ if (elm_atspi_bridge_utils_is_screen_reader_enabled() && widget_data->current_type == ELM_DATETIME_AMPM)
+ {
+ return EINA_TRUE;
+ }
+ //
if (circle_obj->is_propagated)
{
_date_update(circle_obj, EINA_FALSE);
//for accessibility
- Eext_Circle_Object_Datetime_Data *widget_data = (Eext_Circle_Object_Datetime_Data *)circle_obj->widget_data;
- Evas_Object *datetime = circle_obj->widget_object;
- struct tm t;
- char buf_read_text[255];
- char buf_month[255];
- char buf_ampm[3];
-
- elm_datetime_value_get(datetime, &t);
-
- bindtextdomain (PACKAGE, LOCALE_DIR);
- elm_atspi_accessible_translation_domain_set(obj, PACKAGE);
-
- switch(widget_data->current_type)
+ if (elm_atspi_bridge_utils_is_screen_reader_enabled())
{
- case ELM_DATETIME_DATE:
- snprintf(buf_read_text, sizeof(buf_read_text), "%2.0f",(double)t.tm_mday);
- break;
- case ELM_DATETIME_MONTH:
- if(t.tm_mon == 0)
- snprintf(buf_month, sizeof(buf_month), _("IDS_COM_BODY_JANUARY"));
- else if(t.tm_mon == 1)
- snprintf(buf_month, sizeof(buf_month), _("IDS_COM_BODY_FEBRUARY"));
- else if(t.tm_mon == 2)
- snprintf(buf_month, sizeof(buf_month), _("IDS_COM_BODY_MARCH"));
- else if(t.tm_mon == 3)
- snprintf(buf_month, sizeof(buf_month), _("IDS_COM_BODY_APRIL"));
- else if(t.tm_mon == 4)
- snprintf(buf_month, sizeof(buf_month), _("IDS_COM_BODY_MAY"));
- else if(t.tm_mon == 5)
- snprintf(buf_month, sizeof(buf_month), _("IDS_COM_BODY_JUNE"));
- else if(t.tm_mon == 6)
- snprintf(buf_month, sizeof(buf_month), _("IDS_COM_BODY_JULY"));
- else if(t.tm_mon == 7)
- snprintf(buf_month, sizeof(buf_month), _("IDS_COM_BODY_AUGUST"));
- else if(t.tm_mon == 8)
- snprintf(buf_month, sizeof(buf_month), _("IDS_COM_BODY_SEPTEMBER"));
- else if(t.tm_mon == 9)
- snprintf(buf_month, sizeof(buf_month), _("IDS_COM_BODY_OCTOBER"));
- else if(t.tm_mon == 10)
- snprintf(buf_month, sizeof(buf_month), _("IDS_COM_BODY_NOVEMBER"));
- else if(t.tm_mon == 11)
- snprintf(buf_month, sizeof(buf_month), _("IDS_COM_BODY_DECEMBER"));
- snprintf(buf_read_text, sizeof(buf_read_text), "%s",buf_month);
- break;
- case ELM_DATETIME_YEAR:
- snprintf(buf_read_text, sizeof(buf_read_text), "%4.0f",(double)t.tm_year + (double)1900.0f);
- break;
- case ELM_DATETIME_HOUR:
- if ((info->direction == EEXT_ROTARY_DIRECTION_CLOCKWISE && t.tm_hour == 12) ||
- (info->direction == EEXT_ROTARY_DIRECTION_COUNTER_CLOCKWISE && t.tm_hour == 23))
- snprintf(buf_ampm, sizeof(buf_ampm), _("IDS_COM_BODY_PM"));
- else if ((info->direction == EEXT_ROTARY_DIRECTION_CLOCKWISE && t.tm_hour == 0) ||
- (info->direction == EEXT_ROTARY_DIRECTION_COUNTER_CLOCKWISE && t.tm_hour == 11))
- snprintf(buf_ampm, sizeof(buf_ampm), _("IDS_COM_BODY_AM"));
- else
- buf_ampm[0] = '\0';
+ Evas_Object *datetime = circle_obj->widget_object;
+ struct tm t;
+ char buf_read_text[255];
+ char buf_month[255];
+ char buf_ampm[3];
- if (t.tm_hour > 12)
- snprintf(buf_read_text, sizeof(buf_read_text), "%2.0f %s",(double)t.tm_hour - 12.0f, buf_ampm);
- else if (t.tm_hour == 0)
- snprintf(buf_read_text, sizeof(buf_read_text), "%2.0f %s",(double)t.tm_hour + 12.0f, buf_ampm);
- else
- snprintf(buf_read_text, sizeof(buf_read_text), "%2.0f %s",(double)t.tm_hour, buf_ampm);
+ elm_datetime_value_get(datetime, &t);
- break;
- case ELM_DATETIME_MINUTE:
- snprintf(buf_read_text, sizeof(buf_read_text), "%2.0f",(double)t.tm_min);
- break;
- default:
- break;
+ bindtextdomain (PACKAGE, LOCALE_DIR);
+ elm_atspi_accessible_translation_domain_set(obj, PACKAGE);
+
+ switch (widget_data->current_type)
+ {
+ case ELM_DATETIME_DATE:
+ snprintf(buf_read_text, sizeof(buf_read_text), "%2.0f",(double)t.tm_mday);
+ break;
+ case ELM_DATETIME_MONTH:
+ if (t.tm_mon == 0)
+ snprintf(buf_month, sizeof(buf_month), _("IDS_COM_BODY_JANUARY"));
+ else if (t.tm_mon == 1)
+ snprintf(buf_month, sizeof(buf_month), _("IDS_COM_BODY_FEBRUARY"));
+ else if (t.tm_mon == 2)
+ snprintf(buf_month, sizeof(buf_month), _("IDS_COM_BODY_MARCH"));
+ else if (t.tm_mon == 3)
+ snprintf(buf_month, sizeof(buf_month), _("IDS_COM_BODY_APRIL"));
+ else if (t.tm_mon == 4)
+ snprintf(buf_month, sizeof(buf_month), _("IDS_COM_BODY_MAY"));
+ else if (t.tm_mon == 5)
+ snprintf(buf_month, sizeof(buf_month), _("IDS_COM_BODY_JUNE"));
+ else if (t.tm_mon == 6)
+ snprintf(buf_month, sizeof(buf_month), _("IDS_COM_BODY_JULY"));
+ else if (t.tm_mon == 7)
+ snprintf(buf_month, sizeof(buf_month), _("IDS_COM_BODY_AUGUST"));
+ else if (t.tm_mon == 8)
+ snprintf(buf_month, sizeof(buf_month), _("IDS_COM_BODY_SEPTEMBER"));
+ else if (t.tm_mon == 9)
+ snprintf(buf_month, sizeof(buf_month), _("IDS_COM_BODY_OCTOBER"));
+ else if (t.tm_mon == 10)
+ snprintf(buf_month, sizeof(buf_month), _("IDS_COM_BODY_NOVEMBER"));
+ else if (t.tm_mon == 11)
+ snprintf(buf_month, sizeof(buf_month), _("IDS_COM_BODY_DECEMBER"));
+ snprintf(buf_read_text, sizeof(buf_read_text), "%s",buf_month);
+ break;
+ case ELM_DATETIME_YEAR:
+ snprintf(buf_read_text, sizeof(buf_read_text), "%4.0f",(double)t.tm_year + (double)1900.0f);
+ break;
+ case ELM_DATETIME_HOUR:
+ if ((info->direction == EEXT_ROTARY_DIRECTION_CLOCKWISE && t.tm_hour == 12) ||
+ (info->direction == EEXT_ROTARY_DIRECTION_COUNTER_CLOCKWISE && t.tm_hour == 23))
+ snprintf(buf_ampm, sizeof(buf_ampm), _("IDS_COM_BODY_PM"));
+ else if ((info->direction == EEXT_ROTARY_DIRECTION_CLOCKWISE && t.tm_hour == 0) ||
+ (info->direction == EEXT_ROTARY_DIRECTION_COUNTER_CLOCKWISE && t.tm_hour == 11))
+ snprintf(buf_ampm, sizeof(buf_ampm), _("IDS_COM_BODY_AM"));
+ else
+ buf_ampm[0] = '\0';
+
+ if (t.tm_hour > 12)
+ snprintf(buf_read_text, sizeof(buf_read_text), "%2.0f %s",(double)t.tm_hour - 12.0f, buf_ampm);
+ else if (t.tm_hour == 0)
+ snprintf(buf_read_text, sizeof(buf_read_text), "%2.0f %s",(double)t.tm_hour + 12.0f, buf_ampm);
+ else
+ snprintf(buf_read_text, sizeof(buf_read_text), "%2.0f %s",(double)t.tm_hour, buf_ampm);
+
+ break;
+ case ELM_DATETIME_MINUTE:
+ snprintf(buf_read_text, sizeof(buf_read_text), "%2.0f",(double)t.tm_min);
+ break;
+ default:
+ break;
+ }
+ elm_atspi_bridge_utils_say(buf_read_text, EINA_TRUE, NULL, NULL);
}
- elm_atspi_bridge_utils_say(buf_read_text, EINA_TRUE, NULL, NULL);
//
if (widget_data->rotary_timer)
//for accessibility
char buf[DATETIME_FIELD_NAME_BUF_MAX];
int idx = 0;
- evas_object_smart_callback_del(elm_object_part_content_get(obj->widget_object, "field0"), "atspi,highlighted", _accessibility_datetime_radio_highlighted_cb);
- evas_object_smart_callback_del(elm_object_part_content_get(obj->widget_object, "field1"), "atspi,highlighted", _accessibility_datetime_radio_highlighted_cb);
- evas_object_smart_callback_del(elm_object_part_content_get(obj->widget_object, "field2"), "atspi,highlighted", _accessibility_datetime_radio_highlighted_cb);
-
- for (idx = ELM_DATETIME_HOUR; idx <= ELM_DATETIME_AMPM; idx++)
+ for (idx = ELM_DATETIME_AMPM; idx >= ELM_DATETIME_YEAR; idx--)
{
snprintf(buf, sizeof(buf), "field%d", idx);
Evas_Object *field_obj = elm_object_part_content_get(obj->widget_object, buf);
+ if (idx == ELM_DATETIME_AMPM && field_obj)
+ elm_atspi_accessible_gesture_cb_set(field_obj, NULL, NULL);
if (field_obj)
- {
- evas_object_smart_callback_del(field_obj, "atspi,highlighted", _accessibility_datetime_radio_highlighted_cb);
- }
+ evas_object_smart_callback_del(field_obj, "atspi,highlighted", _accessibility_datetime_radio_highlighted_cb);
}
//
//for accessibility
static char *
-_accessibility_item_name_set_cb(void *data, Evas_Object *obj)
+_accessibility_item_name_cb(void *data, Evas_Object *obj)
{
char buf[255] = "";
char buf_month[255];
Eext_Circle_Object *circle_obj = (Eext_Circle_Object *)data;
Evas_Object *datetime = circle_obj->widget_object;
int idx = 0;
- int selected = -1;
struct tm t;
- if(obj == elm_object_part_content_get(datetime, "field0"))
- {
- selected = ELM_DATETIME_DATE;
- }
- else if(obj == elm_object_part_content_get(datetime, "field1"))
- {
- selected = ELM_DATETIME_MONTH;
- }
- else if(obj == elm_object_part_content_get(datetime, "field2"))
- {
- selected = ELM_DATETIME_YEAR;
- }
- for (idx = ELM_DATETIME_HOUR; idx <= ELM_DATETIME_AMPM; idx++)
- {
- snprintf(buf, sizeof(buf), "field%d", idx);
- Evas_Object *field_obj = elm_object_part_content_get(datetime, buf);
- if (field_obj)
- {
- if(obj == field_obj)
- {
- selected = idx;
- }
- }
- }
+ Elm_Datetime_Field_Type field_type = (Elm_Datetime_Field_Type)evas_object_data_get(obj, "_field_type");
elm_datetime_value_get(datetime, &t);
bindtextdomain (PACKAGE, LOCALE_DIR);
- switch(selected)
+ switch (field_type)
{
case ELM_DATETIME_DATE:
- snprintf(buf_unit, sizeof(buf_unit), _("IDS_COM_BODY_DAY"));
+ snprintf(buf_unit, sizeof(buf_unit), _("IDS_COM_BODY_DAY"));
_accessibility_item_make_trait(buf_trait, buf_unit, sizeof(buf_trait));
- snprintf(buf, sizeof(buf), "%2.0f %s %s",(double)t.tm_mday, buf_unit, buf_trait);
+ snprintf(buf, sizeof(buf), "%2.0f %s %s",(double)t.tm_mday, buf_unit, buf_trait);
break;
case ELM_DATETIME_MONTH:
- if(t.tm_mon == 0)
- snprintf(buf_month, sizeof(buf_month), _("IDS_COM_BODY_JANUARY"));
- else if(t.tm_mon == 1)
- snprintf(buf_month, sizeof(buf_month), _("IDS_COM_BODY_FEBRUARY"));
- else if(t.tm_mon == 2)
- snprintf(buf_month, sizeof(buf_month), _("IDS_COM_BODY_MARCH"));
- else if(t.tm_mon == 3)
- snprintf(buf_month, sizeof(buf_month), _("IDS_COM_BODY_APRIL"));
- else if(t.tm_mon == 4)
- snprintf(buf_month, sizeof(buf_month), _("IDS_COM_BODY_MAY"));
- else if(t.tm_mon == 5)
- snprintf(buf_month, sizeof(buf_month), _("IDS_COM_BODY_JUNE"));
- else if(t.tm_mon == 6)
- snprintf(buf_month, sizeof(buf_month), _("IDS_COM_BODY_JULY"));
- else if(t.tm_mon == 7)
- snprintf(buf_month, sizeof(buf_month), _("IDS_COM_BODY_AUGUST"));
- else if(t.tm_mon == 8)
- snprintf(buf_month, sizeof(buf_month), _("IDS_COM_BODY_SEPTEMBER"));
- else if(t.tm_mon == 9)
- snprintf(buf_month, sizeof(buf_month), _("IDS_COM_BODY_OCTOBER"));
- else if(t.tm_mon == 10)
- snprintf(buf_month, sizeof(buf_month), _("IDS_COM_BODY_NOVEMBER"));
- else if(t.tm_mon == 11)
- snprintf(buf_month, sizeof(buf_month), _("IDS_COM_BODY_DECEMBER"));
- snprintf(buf_unit, sizeof(buf_unit), _("IDS_COM_BODY_MONTH"));
+ if (t.tm_mon == 0)
+ snprintf(buf_month, sizeof(buf_month), _("IDS_COM_BODY_JANUARY"));
+ else if (t.tm_mon == 1)
+ snprintf(buf_month, sizeof(buf_month), _("IDS_COM_BODY_FEBRUARY"));
+ else if (t.tm_mon == 2)
+ snprintf(buf_month, sizeof(buf_month), _("IDS_COM_BODY_MARCH"));
+ else if (t.tm_mon == 3)
+ snprintf(buf_month, sizeof(buf_month), _("IDS_COM_BODY_APRIL"));
+ else if (t.tm_mon == 4)
+ snprintf(buf_month, sizeof(buf_month), _("IDS_COM_BODY_MAY"));
+ else if (t.tm_mon == 5)
+ snprintf(buf_month, sizeof(buf_month), _("IDS_COM_BODY_JUNE"));
+ else if (t.tm_mon == 6)
+ snprintf(buf_month, sizeof(buf_month), _("IDS_COM_BODY_JULY"));
+ else if (t.tm_mon == 7)
+ snprintf(buf_month, sizeof(buf_month), _("IDS_COM_BODY_AUGUST"));
+ else if (t.tm_mon == 8)
+ snprintf(buf_month, sizeof(buf_month), _("IDS_COM_BODY_SEPTEMBER"));
+ else if (t.tm_mon == 9)
+ snprintf(buf_month, sizeof(buf_month), _("IDS_COM_BODY_OCTOBER"));
+ else if (t.tm_mon == 10)
+ snprintf(buf_month, sizeof(buf_month), _("IDS_COM_BODY_NOVEMBER"));
+ else if (t.tm_mon == 11)
+ snprintf(buf_month, sizeof(buf_month), _("IDS_COM_BODY_DECEMBER"));
+ snprintf(buf_unit, sizeof(buf_unit), _("IDS_COM_BODY_MONTH"));
_accessibility_item_make_trait(buf_trait, buf_unit, sizeof(buf_trait));
- snprintf(buf, sizeof(buf), "%s %s %s",buf_month, buf_unit, buf_trait);
+ snprintf(buf, sizeof(buf), "%s %s %s",buf_month, buf_unit, buf_trait);
break;
case ELM_DATETIME_YEAR:
- snprintf(buf_unit, sizeof(buf_unit), _("IDS_COM_BODY_YEAR"));
+ snprintf(buf_unit, sizeof(buf_unit), _("IDS_COM_BODY_YEAR"));
_accessibility_item_make_trait(buf_trait, buf_unit, sizeof(buf_trait));
- snprintf(buf, sizeof(buf), "%4.0f %s %s",(double)t.tm_year + (double)1900.0f, buf_unit, buf_trait);
+ snprintf(buf, sizeof(buf), "%4.0f %s %s",(double)t.tm_year + (double)1900.0f, buf_unit, buf_trait);
break;
case ELM_DATETIME_AMPM:
snprintf(buf_trait, sizeof(buf_trait), _("WDS_TTS_TBBODY_DOUBLE_TAP_TO_CHANGE"));
- if((double)t.tm_hour <= 12.0f)
- snprintf(buf_unit, sizeof(buf_unit), _("IDS_COM_BODY_AM"));
+ if ((double)t.tm_hour < 12.0f)
+ snprintf(buf_unit, sizeof(buf_unit), _("IDS_COM_BODY_AM"));
else
- snprintf(buf_unit, sizeof(buf_unit), _("IDS_COM_BODY_PM"));
- _accessibility_item_make_trait(buf_trait, buf_unit, sizeof(buf_trait));
- snprintf(buf, sizeof(buf), "%s %s",buf_unit, buf_trait);
+ snprintf(buf_unit, sizeof(buf_unit), _("IDS_COM_BODY_PM"));
+ snprintf(buf, sizeof(buf), "%s %s",buf_unit, buf_trait);
break;
case ELM_DATETIME_HOUR:
- snprintf(buf_unit, sizeof(buf_unit), _("IDS_COM_BODY_HOUR"));
- if((double)t.tm_hour <= 12.0f)
- {
- snprintf(buf_ampm, sizeof(buf_ampm), _("IDS_COM_BODY_AM"));
- _accessibility_item_make_trait(buf_trait, buf_unit, sizeof(buf_trait));
- snprintf(buf, sizeof(buf), "%2.0f %s %s %s",(double)t.tm_hour, buf_ampm, buf_unit, buf_trait);
- }
- else
- {
- snprintf(buf_ampm, sizeof(buf_ampm), _("IDS_COM_BODY_PM"));
- _accessibility_item_make_trait(buf_trait, buf_unit, sizeof(buf_trait));
- snprintf(buf, sizeof(buf), "%2.0f %s %s %s",(double)t.tm_hour - (double)12.0f, buf_ampm, buf_unit, buf_trait);
- }
+ snprintf(buf_unit, sizeof(buf_unit), _("IDS_COM_BODY_HOUR"));
+ _accessibility_item_make_trait(buf_trait, buf_unit, sizeof(buf_trait));
+ snprintf(buf, sizeof(buf), "%2.0f %s %s",(double)t.tm_hour, buf_unit, buf_trait);
break;
case ELM_DATETIME_MINUTE:
- snprintf(buf_unit, sizeof(buf_unit), _("IDS_COM_BODY_MINUTE"));
+ snprintf(buf_unit, sizeof(buf_unit), _("IDS_COM_BODY_MINUTE"));
_accessibility_item_make_trait(buf_trait, buf_unit, sizeof(buf_trait));
- snprintf(buf, sizeof(buf), "%2.0f %s %s",(double)t.tm_min, buf_unit, buf_trait);
+ snprintf(buf, sizeof(buf), "%2.0f %s %s",(double)t.tm_min, buf_unit, buf_trait);
break;
}
return strdup(buf);
}
+
+static Eina_Bool
+_accessibility_datetime_ampm_gesutre_cb(void *data, Elm_Atspi_Gesture_Info gesture_info, Evas_Object *obj)
+{
+ Eext_Circle_Object *circle_obj = (Eext_Circle_Object *)data;
+ Evas_Object *datetime = circle_obj->widget_object;
+ char buf_unit[255];
+ struct tm t;
+
+ switch (gesture_info.type)
+ {
+ case ELM_ATSPI_GESTURE_ONE_FINGER_DOUBLE_TAP:
+ elm_datetime_value_get(datetime, &t);
+
+ if ((double)t.tm_hour < 12.0f)
+ snprintf(buf_unit, sizeof(buf_unit), _("IDS_COM_BODY_PM"));
+ else
+ snprintf(buf_unit, sizeof(buf_unit), _("IDS_COM_BODY_AM"));
+
+ elm_atspi_bridge_utils_say(buf_unit, EINA_TRUE, NULL, NULL);
+ break;
+ }
+
+ return EINA_FALSE;
+}
+
static void
_accessibility_datetime_radio_highlighted_cb(void *data, Evas_Object *obj, void *event_info)
{
char buf[255] = "";
Eext_Circle_Object *circle_obj = (Eext_Circle_Object *)data;
Evas_Object *datetime = circle_obj->widget_object;
- int idx = 0;
- int selected = -1;
- Evas_Object *radio;
-
- if(obj == elm_object_part_content_get(datetime, "field0"))
- selected = ELM_DATETIME_DATE;
- else if(obj == elm_object_part_content_get(datetime, "field1"))
- selected = ELM_DATETIME_MONTH;
- else if(obj == elm_object_part_content_get(datetime, "field2"))
- selected = ELM_DATETIME_YEAR;
+ Elm_Datetime_Field_Type field_type = (Elm_Datetime_Field_Type)evas_object_data_get(obj, "_field_type");
- for (idx = ELM_DATETIME_HOUR; idx <= ELM_DATETIME_AMPM; idx++)
+ if (field_type == ELM_DATETIME_AMPM)
{
- snprintf(buf, sizeof(buf), "field%d", idx);
- Evas_Object *field_obj = elm_object_part_content_get(datetime, buf);
- if (field_obj)
- {
- if(obj == field_obj)
- {
- selected = idx;
- }
- }
+ Eext_Circle_Object_Datetime_Data *widget_data = (Eext_Circle_Object_Datetime_Data *)circle_obj->widget_data;
+ widget_data->current_type = field_type;
+ snprintf(buf, sizeof(buf), "field%d", ELM_DATETIME_HOUR);
+ Evas_Object *radio_obj = elm_object_part_content_get(datetime, buf);
+ elm_radio_value_set(radio_obj, -1);
+ _eext_circle_object_datetime_picker_mark_angle_set(circle_obj, -1, EINA_FALSE);
+ circle_obj->bg_image_index = 6;
+
+ _eext_circle_object_changed(circle_obj);
}
-
- radio = _eext_circle_object_datetime_selected_field_object_get(datetime);
- if(selected == ELM_DATETIME_AMPM)
- elm_radio_value_set(radio, ELM_DATETIME_HOUR);
else
- elm_radio_value_set(radio, selected);
-
- _eext_circle_object_datetime_current_type_update(circle_obj, EINA_FALSE);
+ {
+ elm_radio_value_set(obj, field_type);
+ _eext_circle_object_datetime_current_type_update(circle_obj, EINA_TRUE);
+ }
- elm_atspi_accessible_name_cb_set(obj, _accessibility_item_name_set_cb, (Eext_Circle_Object*)circle_obj);
+ elm_atspi_accessible_name_cb_set(obj, _accessibility_item_name_cb, (Eext_Circle_Object*)circle_obj);
elm_atspi_accessible_reading_info_type_set(obj, ELM_ACCESSIBLE_READING_INFO_TYPE_NAME);
}
//
_eext_circle_object_datetime_radio_changed_cb, obj);
evas_object_smart_callback_add(elm_object_part_content_get(datetime, "field2"), "changed",
_eext_circle_object_datetime_radio_changed_cb, obj);
- //for accessibility
- evas_object_smart_callback_add(elm_object_part_content_get(datetime, "field0"), "atspi,highlighted", _accessibility_datetime_radio_highlighted_cb, obj);
- evas_object_smart_callback_add(elm_object_part_content_get(datetime, "field1"), "atspi,highlighted", _accessibility_datetime_radio_highlighted_cb, obj);
- evas_object_smart_callback_add(elm_object_part_content_get(datetime, "field2"), "atspi,highlighted", _accessibility_datetime_radio_highlighted_cb, obj);
- //
for (idx = ELM_DATETIME_HOUR; idx <= ELM_DATETIME_AMPM; idx++)
{
if (field_type != ELM_DATETIME_AMPM)
evas_object_smart_callback_add(field_obj, "changed",
_eext_circle_object_datetime_radio_changed_cb, obj);
- //for accessibility
- evas_object_smart_callback_add(field_obj, "atspi,highlighted", _accessibility_datetime_radio_highlighted_cb, obj);
- //
}
}
+ //for accessibility
+ for (idx = ELM_DATETIME_YEAR; idx <= ELM_DATETIME_AMPM; idx++)
+ {
+ snprintf(buf, sizeof(buf), "field%d", idx);
+
+ Evas_Object *field_obj = elm_object_part_content_get(obj->widget_object, buf);
+ if (field_obj)
+ evas_object_smart_callback_add(field_obj, "atspi,highlighted", _accessibility_datetime_radio_highlighted_cb, obj);
+ if (idx == ELM_DATETIME_AMPM && field_obj)
+ elm_atspi_accessible_gesture_cb_set(field_obj, _accessibility_datetime_ampm_gesutre_cb, obj);
+ }
+ //
+
evas_object_smart_callback_add(datetime, "changed",
_eext_circle_object_datetime_changed_cb, obj);