NULL
};
+static int datepicker_type = 0;
+
static const int picker_mark_angle_year[] =
{0,7,14,21,28,36,43,50,57,64,72,79,86,93,100,108,115,122,129,136,144,151,158,165,172,180,187,194,201,208,216,223,230,237,244,252,259,266,273,280,288,295,302,309,316,324,331,338,345,352};
elm_datetime_value_get(datetime, &t);
+ //C# FIXME: should consider current picker type
radio = _eext_circle_object_datetime_selected_field_object_get(datetime);
if (radio)
{
{
Eext_Circle_Object *circle_obj = (Eext_Circle_Object *)data;
+ //C# FIXME: When datepicker and timepicker is changed, current type should be updated
+ // please define datepicker_type and timepicker_type static value and update
+ // when picker focus is changed
if (circle_obj->widget_object == event_info)
_eext_circle_object_datetime_current_type_update(circle_obj, EINA_FALSE);
else
int max_day;
double picker_angle = 0.0;
- elm_datetime_value_get(datetime, &t);
- elm_datetime_field_limit_get(datetime, data->current_type, &min, &max);
+ int year, month, day;
+ year = month = day = 0;
+ if (!strcmp(efl_class_name_get(datetime), "Datepicker"))
+ {
+ efl_ui_datepicker_date_get(datetime, &year, &month, &day);
+ }
+ else
+ {
+ elm_datetime_value_get(datetime, &t);
+ elm_datetime_field_limit_get(datetime, data->current_type, &min, &max);
+ }
+
+ //C# FIXME: Implements other types
+ // Here, Only year type is implemented
switch (data->current_type)
{
case ELM_DATETIME_YEAR:
- if (value_up) t.tm_year += 1;
- else t.tm_year -= 1;
+ if (!strcmp(efl_class_name_get(datetime), "Datepicker"))
+ {
+ if (value_up) year += 1;
+ else year -= 1;
+ picker_angle = (double)(picker_mark_angle_year[(int)(year) % PICKER_MARK_PARTITION_COUNT_YEAR]);
+ }
+ else
+ {
+ if (value_up) t.tm_year += 1;
+ else t.tm_year -= 1;
- if (t.tm_year < min) t.tm_year = max;
- else if (t.tm_year > max) t.tm_year = min;
+ if (t.tm_year < min) t.tm_year = max;
+ else if (t.tm_year > max) t.tm_year = min;
+
+ picker_angle = (double)(picker_mark_angle_year[(int)((t.tm_year + 1900) % PICKER_MARK_PARTITION_COUNT_YEAR)]);
+ }
- 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, EINA_TRUE);
break;
case ELM_DATETIME_MONTH:
break;
}
- elm_datetime_value_set(datetime, &t);
+ if (!strcmp(efl_class_name_get(datetime), "Datepicker"))
+ {
+ efl_ui_datepicker_date_set(datetime, year, month, day);
+ }
+ else
+ {
+ elm_datetime_value_set(datetime, &t);
+ }
}
static Eina_Bool
selected_radio = _eext_circle_object_datetime_selected_field_object_get(circle_obj->widget_object);
elm_object_signal_emit(selected_radio, "elm,state,rotary,active", "eext");
+ //C# FIXME: Implements other types
if (info->direction == EEXT_ROTARY_DIRECTION_CLOCKWISE)
_date_update(circle_obj, EINA_TRUE);
else
}
//
+static void
+date_field_focus_cb(void *data, const Efl_Event *event)
+{
+ int value = (int)data;
+ ERR("current focused type:%d", value);
+ datepicker_type = value;
+}
+
+static void
+date_field_legacy_focus_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
+{
+ int value = (int)data;
+ ERR("legacy: current focused type:%d", value);
+ datepicker_type = value;
+}
+
+static void add_date_type(Evas_Object *obj)
+{
+ double max;
+ efl_ui_range_min_max_get(obj, NULL, &max);
+ efl_ui_widget_focus_allow_set(obj, EINA_TRUE);
+ int value = -1;
+
+ //C# FIXME: consider picker type
+ if (max >= 2000) value = 2;
+ else if(max >= 30.0) value = 1;
+ else value = 0;
+
+ evas_object_smart_callback_add(obj, "focused", date_field_legacy_focus_cb, value);
+ efl_event_callback_add(obj, EFL_UI_FOCUS_OBJECT_EVENT_FOCUS_CHANGED, date_field_focus_cb, value);
+}
+
+
static void
_eext_circle_object_datetime_init(Eext_Circle_Object *obj, Evas_Object *datetime)
{
elm_object_style_set(datetime, "datepicker/circle");
- evas_object_smart_callback_add(elm_object_part_content_get(datetime, "field0"), "changed",
- _eext_circle_object_datetime_radio_changed_cb, obj);
- evas_object_smart_callback_add(elm_object_part_content_get(datetime, "field1"), "changed",
- _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);
+ if (!strcmp(efl_class_name_get(datetime), "Datepicker"))
+ {
+ Evas_Object *date_field0 = efl_content_get(efl_part(datetime, "efl.field0"));
+ add_date_type(date_field0);
+ Evas_Object *date_field1 = efl_content_get(efl_part(datetime, "efl.field1"));
+ add_date_type(date_field1);
+ Evas_Object *date_field2 = efl_content_get(efl_part(datetime, "efl.field2"));
+ add_date_type(date_field2);
+ }
+ else
+ {
+ evas_object_smart_callback_add(elm_object_part_content_get(datetime, "field0"), "changed",
+ _eext_circle_object_datetime_radio_changed_cb, obj);
+ evas_object_smart_callback_add(elm_object_part_content_get(datetime, "field1"), "changed",
+ _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 (idx = ELM_DATETIME_HOUR; idx <= ELM_DATETIME_AMPM; idx++)
{