Eolian: Integration of Clock

This commit is contained in:
Daniel Zaoui 2014-03-20 11:11:48 +02:00
parent f1ff0f58bf
commit ee1003af32
5 changed files with 342 additions and 309 deletions

View File

@ -567,7 +567,9 @@ BUILT_SOURCES = \
elm_calendar.eo.c \
elm_calendar.eo.h \
elm_check.eo.c \
elm_check.eo.h
elm_check.eo.h \
elm_clock.eo.c \
elm_clock.eo.h
EXTRA_DIST += \
elm_widget.eo \
@ -591,7 +593,8 @@ EXTRA_DIST += \
elm_bubble.eo \
elm_button.eo \
elm_calendar.eo \
elm_check.eo
elm_check.eo \
elm_clock.eo
nodist_includesunstable_HEADERS = \
elm_widget.eo.h \
@ -615,5 +618,6 @@ nodist_includesunstable_HEADERS = \
elm_bubble.eo.h \
elm_button.eo.h \
elm_calendar.eo.h \
elm_check.eo.h
elm_check.eo.h \
elm_clock.eo.h

View File

@ -6,8 +6,6 @@
#include "elm_priv.h"
#include "elm_widget_clock.h"
EAPI Eo_Op ELM_OBJ_CLOCK_BASE_ID = EO_NOOP;
#define MY_CLASS ELM_OBJ_CLOCK_CLASS
#define MY_CLASS_NAME "Elm_Clock"
@ -562,19 +560,17 @@ _time_update(Evas_Object *obj)
sd->cur.ampm = -1;
}
static void
_elm_clock_smart_theme(Eo *obj, void *_pd EINA_UNUSED, va_list *list)
EOLIAN static Eina_Bool
_elm_clock_elm_widget_theme_apply(Eo *obj, Elm_Clock_Data *sd EINA_UNUSED)
{
Eina_Bool *ret = va_arg(*list, Eina_Bool *);
if (ret) *ret = EINA_FALSE;
Eina_Bool int_ret = EINA_FALSE;
eo_do_super(obj, MY_CLASS, elm_obj_widget_theme_apply(&int_ret));
if (!int_ret) return;
if (!int_ret) return EINA_FALSE;
_time_update(obj);
if (ret) *ret = EINA_TRUE;
return EINA_TRUE;
}
static Eina_Bool
@ -653,10 +649,9 @@ _access_state_cb(void *data EINA_UNUSED, Evas_Object *obj)
return NULL;
}
static void
_elm_clock_smart_add(Eo *obj, void *_pd, va_list *list EINA_UNUSED)
EOLIAN static void
_elm_clock_evas_smart_add(Eo *obj, Elm_Clock_Data *priv)
{
Elm_Clock_Smart_Data *priv = _pd;
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
eo_do_super(obj, MY_CLASS, evas_obj_smart_add());
@ -692,10 +687,9 @@ _elm_clock_smart_add(Eo *obj, void *_pd, va_list *list EINA_UNUSED)
(_elm_access_info_get(obj), ELM_ACCESS_STATE, _access_state_cb, NULL);
}
static void
_elm_clock_smart_del(Eo *obj, void *_pd, va_list *list EINA_UNUSED)
EOLIAN static void
_elm_clock_evas_smart_del(Eo *obj, Elm_Clock_Data *sd)
{
Elm_Clock_Smart_Data *sd = _pd;
ecore_timer_del(sd->ticker);
ecore_timer_del(sd->spin);
@ -707,37 +701,28 @@ _elm_clock_smart_del(Eo *obj, void *_pd, va_list *list EINA_UNUSED)
static Eina_Bool _elm_clock_smart_focus_next_enable = EINA_FALSE;
static void
_elm_clock_smart_focus_next_manager_is(Eo *obj EINA_UNUSED, void *_pd EINA_UNUSED, va_list *list)
EOLIAN static Eina_Bool
_elm_clock_elm_widget_focus_next_manager_is(Eo *obj EINA_UNUSED, Elm_Clock_Data *_pd EINA_UNUSED)
{
Eina_Bool *ret = va_arg(*list, Eina_Bool *);
*ret = _elm_clock_smart_focus_next_enable;
return _elm_clock_smart_focus_next_enable;
}
static void
_elm_clock_smart_focus_next(Eo *obj, void *_pd EINA_UNUSED, va_list *list)
EOLIAN static Eina_Bool
_elm_clock_elm_widget_focus_next(Eo *obj, Elm_Clock_Data *sd, Elm_Focus_Direction dir, Evas_Object **next)
{
Elm_Focus_Direction dir = va_arg(*list, Elm_Focus_Direction);
Evas_Object **next = va_arg(*list, Evas_Object **);
Eina_Bool *ret = va_arg(*list, Eina_Bool *);
if (ret) *ret = EINA_FALSE;
Evas_Object *ao, *po;
Eina_List *items = NULL;
Elm_Clock_Smart_Data *sd = _pd;
if (!sd->edit)
{
*next = (Evas_Object *)obj;
if (ret) *ret = !elm_widget_highlight_get(obj);
return;
return !elm_widget_highlight_get(obj);
}
else if (!elm_widget_highlight_get(obj))
{
*next = (Evas_Object *)obj;
if (ret) *ret = EINA_TRUE;
return;
return EINA_TRUE;
}
int i;
@ -771,7 +756,7 @@ _elm_clock_smart_focus_next(Eo *obj, void *_pd EINA_UNUSED, va_list *list)
items = eina_list_append(items, ao);
}
if (ret) *ret = elm_widget_focus_list_next_get
return elm_widget_focus_list_next_get
(obj, items, eina_list_data_get, dir, next);
}
@ -794,10 +779,10 @@ _access_obj_process(Evas_Object *obj, Eina_Bool is_access)
_access_time_register(obj, is_access);
}
static void
_elm_clock_smart_access(Eo *obj EINA_UNUSED, void *_pd EINA_UNUSED, va_list *list)
EOLIAN static void
_elm_clock_elm_widget_access(Eo *obj EINA_UNUSED, Elm_Clock_Data *_pd EINA_UNUSED, Eina_Bool access)
{
_elm_clock_smart_focus_next_enable = va_arg(*list, int);
_elm_clock_smart_focus_next_enable = access;
_access_obj_process(obj, _elm_clock_smart_focus_next_enable);
}
@ -810,8 +795,8 @@ elm_clock_add(Evas_Object *parent)
return obj;
}
static void
_constructor(Eo *obj, void *_pd EINA_UNUSED, va_list *list EINA_UNUSED)
EOLIAN static void
_elm_clock_eo_base_constructor(Eo *obj, Elm_Clock_Data *_pd EINA_UNUSED)
{
eo_do_super(obj, MY_CLASS, eo_constructor());
eo_do(obj,
@ -820,7 +805,7 @@ _constructor(Eo *obj, void *_pd EINA_UNUSED, va_list *list EINA_UNUSED)
}
static void
_timediff_set(Elm_Clock_Smart_Data *sd)
_timediff_set(Elm_Clock_Data *sd)
{
struct timeval timev;
struct tm *tm;
@ -834,24 +819,9 @@ _timediff_set(Elm_Clock_Smart_Data *sd)
sd->min - tm->tm_min) * 60) + sd->sec - tm->tm_sec;
}
EAPI void
elm_clock_time_set(Evas_Object *obj,
int hrs,
int min,
int sec)
EOLIAN static void
_elm_clock_time_set(Eo *obj, Elm_Clock_Data *sd, int hrs, int min, int sec)
{
ELM_CLOCK_CHECK(obj);
eo_do(obj, elm_obj_clock_time_set(hrs, min, sec));
}
static void
_time_set(Eo *obj, void *_pd, va_list *list)
{
int hrs = va_arg(*list, int);
int min = va_arg(*list, int);
int sec = va_arg(*list, int);
Elm_Clock_Smart_Data *sd = _pd;
sd->hrs = hrs;
sd->min = min;
sd->sec = sec;
@ -860,43 +830,17 @@ _time_set(Eo *obj, void *_pd, va_list *list)
_time_update(obj);
}
EAPI void
elm_clock_time_get(const Evas_Object *obj,
int *hrs,
int *min,
int *sec)
EOLIAN static void
_elm_clock_time_get(Eo *obj EINA_UNUSED, Elm_Clock_Data *sd, int *hrs, int *min, int *sec)
{
ELM_CLOCK_CHECK(obj);
eo_do((Eo *) obj, elm_obj_clock_time_get(hrs, min, sec));
}
static void
_time_get(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
{
int *hrs = va_arg(*list, int *);
int *min = va_arg(*list, int *);
int *sec = va_arg(*list, int *);
Elm_Clock_Smart_Data *sd = _pd;
if (hrs) *hrs = sd->hrs;
if (min) *min = sd->min;
if (sec) *sec = sd->sec;
}
EAPI void
elm_clock_edit_set(Evas_Object *obj,
Eina_Bool edit)
EOLIAN static void
_elm_clock_edit_set(Eo *obj, Elm_Clock_Data *sd, Eina_Bool edit)
{
ELM_CLOCK_CHECK(obj);
eo_do(obj, elm_obj_clock_edit_set(edit));
}
static void
_edit_set(Eo *obj, void *_pd, va_list *list)
{
Eina_Bool edit = va_arg(*list, int);
Elm_Clock_Smart_Data *sd = _pd;
sd->edit = edit;
if (!edit)
_timediff_set(sd);
@ -906,38 +850,15 @@ _edit_set(Eo *obj, void *_pd, va_list *list)
_time_update(obj);
}
EAPI Eina_Bool
elm_clock_edit_get(const Evas_Object *obj)
EOLIAN static Eina_Bool
_elm_clock_edit_get(Eo *obj EINA_UNUSED, Elm_Clock_Data *sd)
{
ELM_CLOCK_CHECK(obj) EINA_FALSE;
Eina_Bool ret = EINA_FALSE;
eo_do((Eo *) obj, elm_obj_clock_edit_get(&ret));
return ret;
return sd->edit;
}
static void
_edit_get(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
EOLIAN static void
_elm_clock_edit_mode_set(Eo *obj, Elm_Clock_Data *sd, Elm_Clock_Edit_Mode digedit)
{
Eina_Bool *ret = va_arg(*list, Eina_Bool *);
Elm_Clock_Smart_Data *sd = _pd;
*ret = sd->edit;
}
EAPI void
elm_clock_edit_mode_set(Evas_Object *obj,
Elm_Clock_Edit_Mode digedit)
{
ELM_CLOCK_CHECK(obj);
eo_do(obj, elm_obj_clock_edit_mode_set(digedit));
}
static void
_edit_mode_set(Eo *obj, void *_pd, va_list *list)
{
Elm_Clock_Edit_Mode digedit = va_arg(*list, Elm_Clock_Edit_Mode);
Elm_Clock_Smart_Data *sd = _pd;
sd->digedit = digedit;
if (digedit == ELM_CLOCK_EDIT_DEFAULT)
elm_clock_edit_set(obj, EINA_FALSE);
@ -945,143 +866,53 @@ _edit_mode_set(Eo *obj, void *_pd, va_list *list)
_time_update(obj);
}
EAPI Elm_Clock_Edit_Mode
elm_clock_edit_mode_get(const Evas_Object *obj)
EOLIAN static Elm_Clock_Edit_Mode
_elm_clock_edit_mode_get(Eo *obj EINA_UNUSED, Elm_Clock_Data *sd)
{
ELM_CLOCK_CHECK(obj) 0;
Elm_Clock_Edit_Mode ret = 0;
eo_do((Eo *) obj, elm_obj_clock_edit_mode_get(&ret));
return ret;
return sd->digedit;
}
static void
_edit_mode_get(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
EOLIAN static void
_elm_clock_show_am_pm_set(Eo *obj, Elm_Clock_Data *sd, Eina_Bool am_pm)
{
Elm_Clock_Edit_Mode *ret = va_arg(*list, Elm_Clock_Edit_Mode *);
Elm_Clock_Smart_Data *sd = _pd;
*ret = sd->digedit;
}
EAPI void
elm_clock_show_am_pm_set(Evas_Object *obj,
Eina_Bool am_pm)
{
ELM_CLOCK_CHECK(obj);
eo_do(obj, elm_obj_clock_show_am_pm_set(am_pm));
}
static void
_show_am_pm_set(Eo *obj, void *_pd, va_list *list)
{
Eina_Bool am_pm = va_arg(*list, int);
Elm_Clock_Smart_Data *sd = _pd;
sd->am_pm = !!am_pm;
_time_update(obj);
}
EAPI Eina_Bool
elm_clock_show_am_pm_get(const Evas_Object *obj)
EOLIAN static Eina_Bool
_elm_clock_show_am_pm_get(Eo *obj EINA_UNUSED, Elm_Clock_Data *sd)
{
ELM_CLOCK_CHECK(obj) EINA_FALSE;
Eina_Bool ret = EINA_FALSE;
eo_do((Eo *) obj, elm_obj_clock_show_am_pm_get(&ret));
return ret;
return sd->am_pm;
}
static void
_show_am_pm_get(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
EOLIAN static void
_elm_clock_show_seconds_set(Eo *obj, Elm_Clock_Data *sd, Eina_Bool seconds)
{
Eina_Bool *ret = va_arg(*list, Eina_Bool *);
Elm_Clock_Smart_Data *sd = _pd;
*ret = sd->am_pm;
}
EAPI void
elm_clock_show_seconds_set(Evas_Object *obj,
Eina_Bool seconds)
{
ELM_CLOCK_CHECK(obj);
eo_do(obj, elm_obj_clock_show_seconds_set(seconds));
}
static void
_show_seconds_set(Eo *obj, void *_pd, va_list *list)
{
Eina_Bool seconds = va_arg(*list, int);
Elm_Clock_Smart_Data *sd = _pd;
sd->seconds = !!seconds;
_time_update(obj);
}
EAPI Eina_Bool
elm_clock_show_seconds_get(const Evas_Object *obj)
EOLIAN static Eina_Bool
_elm_clock_show_seconds_get(Eo *obj EINA_UNUSED, Elm_Clock_Data *sd)
{
ELM_CLOCK_CHECK(obj) EINA_FALSE;
Eina_Bool ret = EINA_FALSE;
eo_do((Eo *) obj, elm_obj_clock_show_seconds_get(&ret));
return ret;
return sd->seconds;
}
static void
_show_seconds_get(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
EOLIAN static void
_elm_clock_first_interval_set(Eo *obj EINA_UNUSED, Elm_Clock_Data *sd, double interval)
{
Eina_Bool *ret = va_arg(*list, Eina_Bool *);
Elm_Clock_Smart_Data *sd = _pd;
*ret = sd->seconds;
}
EAPI void
elm_clock_first_interval_set(Evas_Object *obj,
double interval)
{
ELM_CLOCK_CHECK(obj);
eo_do(obj, elm_obj_clock_first_interval_set(interval));
}
static void
_first_interval_set(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
{
double interval = va_arg(*list, double);
Elm_Clock_Smart_Data *sd = _pd;
sd->first_interval = interval;
}
EAPI double
elm_clock_first_interval_get(const Evas_Object *obj)
EOLIAN static double
_elm_clock_first_interval_get(Eo *obj EINA_UNUSED, Elm_Clock_Data *sd)
{
ELM_CLOCK_CHECK(obj) 0.0;
double ret = 0.0;
eo_do((Eo *) obj, elm_obj_clock_first_interval_get(&ret));
return ret;
return sd->first_interval;
}
static void
_first_interval_get(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
EOLIAN static void
_elm_clock_pause_set(Eo *obj EINA_UNUSED, Elm_Clock_Data *sd, Eina_Bool paused)
{
double *ret = va_arg(*list, double *);
Elm_Clock_Smart_Data *sd = _pd;
*ret = sd->first_interval;
}
EAPI void
elm_clock_pause_set(Evas_Object *obj, Eina_Bool paused)
{
ELM_CLOCK_CHECK(obj);
eo_do(obj, elm_obj_clock_pause_set(paused));
}
static void
_pause_set(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
{
Eina_Bool paused = va_arg(*list, int);
Elm_Clock_Smart_Data *sd = _pd;
paused = !!paused;
if (sd->paused == paused)
return;
@ -1095,94 +926,25 @@ _pause_set(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
}
}
EAPI Eina_Bool
elm_clock_pause_get(const Evas_Object *obj)
EOLIAN static Eina_Bool
_elm_clock_pause_get(Eo *obj EINA_UNUSED, Elm_Clock_Data *sd)
{
ELM_CLOCK_CHECK(obj) EINA_FALSE;
Eina_Bool ret = EINA_FALSE;
eo_do(obj, elm_obj_clock_pause_get(&ret));
return ret;
return sd->paused;
}
EOLIAN static Eina_Bool
_elm_clock_elm_widget_focus_direction_manager_is(Eo *obj EINA_UNUSED, Elm_Clock_Data *_pd EINA_UNUSED)
{
return EINA_FALSE;
}
static void
_pause_get(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
_elm_clock_class_constructor(Eo_Class *klass)
{
Eina_Bool *ret = va_arg(*list, Eina_Bool *);
Elm_Clock_Smart_Data *sd = _pd;
*ret = sd->paused;
}
static void
_elm_clock_smart_focus_direction_manager_is(Eo *obj EINA_UNUSED, void *_pd EINA_UNUSED, va_list *list)
{
Eina_Bool *ret = va_arg(*list, Eina_Bool *);
*ret = EINA_FALSE;
}
static void
_class_constructor(Eo_Class *klass)
{
const Eo_Op_Func_Description func_desc[] = {
EO_OP_FUNC(EO_BASE_ID(EO_BASE_SUB_ID_CONSTRUCTOR), _constructor),
EO_OP_FUNC(EVAS_OBJ_SMART_ID(EVAS_OBJ_SMART_SUB_ID_ADD), _elm_clock_smart_add),
EO_OP_FUNC(EVAS_OBJ_SMART_ID(EVAS_OBJ_SMART_SUB_ID_DEL), _elm_clock_smart_del),
EO_OP_FUNC(ELM_OBJ_WIDGET_ID(ELM_OBJ_WIDGET_SUB_ID_THEME_APPLY), _elm_clock_smart_theme),
EO_OP_FUNC(ELM_OBJ_WIDGET_ID(ELM_OBJ_WIDGET_SUB_ID_ACCESS), _elm_clock_smart_access),
EO_OP_FUNC(ELM_OBJ_WIDGET_ID(ELM_OBJ_WIDGET_SUB_ID_FOCUS_NEXT_MANAGER_IS), _elm_clock_smart_focus_next_manager_is),
EO_OP_FUNC(ELM_OBJ_WIDGET_ID(ELM_OBJ_WIDGET_SUB_ID_FOCUS_NEXT), _elm_clock_smart_focus_next),
EO_OP_FUNC(ELM_OBJ_WIDGET_ID(ELM_OBJ_WIDGET_SUB_ID_FOCUS_DIRECTION_MANAGER_IS), _elm_clock_smart_focus_direction_manager_is),
EO_OP_FUNC(ELM_OBJ_CLOCK_ID(ELM_OBJ_CLOCK_SUB_ID_TIME_SET), _time_set),
EO_OP_FUNC(ELM_OBJ_CLOCK_ID(ELM_OBJ_CLOCK_SUB_ID_TIME_GET), _time_get),
EO_OP_FUNC(ELM_OBJ_CLOCK_ID(ELM_OBJ_CLOCK_SUB_ID_EDIT_SET), _edit_set),
EO_OP_FUNC(ELM_OBJ_CLOCK_ID(ELM_OBJ_CLOCK_SUB_ID_EDIT_GET), _edit_get),
EO_OP_FUNC(ELM_OBJ_CLOCK_ID(ELM_OBJ_CLOCK_SUB_ID_EDIT_MODE_SET), _edit_mode_set),
EO_OP_FUNC(ELM_OBJ_CLOCK_ID(ELM_OBJ_CLOCK_SUB_ID_EDIT_MODE_GET), _edit_mode_get),
EO_OP_FUNC(ELM_OBJ_CLOCK_ID(ELM_OBJ_CLOCK_SUB_ID_SHOW_AM_PM_SET), _show_am_pm_set),
EO_OP_FUNC(ELM_OBJ_CLOCK_ID(ELM_OBJ_CLOCK_SUB_ID_SHOW_AM_PM_GET), _show_am_pm_get),
EO_OP_FUNC(ELM_OBJ_CLOCK_ID(ELM_OBJ_CLOCK_SUB_ID_SHOW_SECONDS_SET), _show_seconds_set),
EO_OP_FUNC(ELM_OBJ_CLOCK_ID(ELM_OBJ_CLOCK_SUB_ID_SHOW_SECONDS_GET), _show_seconds_get),
EO_OP_FUNC(ELM_OBJ_CLOCK_ID(ELM_OBJ_CLOCK_SUB_ID_FIRST_INTERVAL_SET), _first_interval_set),
EO_OP_FUNC(ELM_OBJ_CLOCK_ID(ELM_OBJ_CLOCK_SUB_ID_FIRST_INTERVAL_GET), _first_interval_get),
EO_OP_FUNC(ELM_OBJ_CLOCK_ID(ELM_OBJ_CLOCK_SUB_ID_PAUSE_SET), _pause_set),
EO_OP_FUNC(ELM_OBJ_CLOCK_ID(ELM_OBJ_CLOCK_SUB_ID_PAUSE_GET), _pause_get),
EO_OP_FUNC_SENTINEL
};
eo_class_funcs_set(klass, func_desc);
evas_smart_legacy_type_register(MY_CLASS_NAME_LEGACY, klass);
if (_elm_config->access_mode != ELM_ACCESS_MODE_OFF)
_elm_clock_smart_focus_next_enable = EINA_TRUE;
}
static const Eo_Op_Description op_desc[] = {
EO_OP_DESCRIPTION(ELM_OBJ_CLOCK_SUB_ID_TIME_SET, "Set a clock widget's time, programmatically."),
EO_OP_DESCRIPTION(ELM_OBJ_CLOCK_SUB_ID_TIME_GET, "Get a clock widget's time values."),
EO_OP_DESCRIPTION(ELM_OBJ_CLOCK_SUB_ID_EDIT_SET, "Set whether a given clock widget is under <b>edition mode</b> or."),
EO_OP_DESCRIPTION(ELM_OBJ_CLOCK_SUB_ID_EDIT_GET, "Retrieve whether a given clock widget is under editing mode."),
EO_OP_DESCRIPTION(ELM_OBJ_CLOCK_SUB_ID_EDIT_MODE_SET, "Set what digits of the given clock widget should be editable."),
EO_OP_DESCRIPTION(ELM_OBJ_CLOCK_SUB_ID_EDIT_MODE_GET, "Retrieve what digits of the given clock widget should be."),
EO_OP_DESCRIPTION(ELM_OBJ_CLOCK_SUB_ID_SHOW_AM_PM_SET, "Set if the given clock widget must show hours in military or."),
EO_OP_DESCRIPTION(ELM_OBJ_CLOCK_SUB_ID_SHOW_AM_PM_GET, "Get if the given clock widget shows hours in military or am/pm."),
EO_OP_DESCRIPTION(ELM_OBJ_CLOCK_SUB_ID_SHOW_SECONDS_SET, "Set if the given clock widget must show time with seconds or not."),
EO_OP_DESCRIPTION(ELM_OBJ_CLOCK_SUB_ID_SHOW_SECONDS_GET, "Get whether the given clock widget is showing time with seconds."),
EO_OP_DESCRIPTION(ELM_OBJ_CLOCK_SUB_ID_FIRST_INTERVAL_SET, "Set the first interval on time updates for a user mouse button hold."),
EO_OP_DESCRIPTION(ELM_OBJ_CLOCK_SUB_ID_FIRST_INTERVAL_GET, "Get the first interval on time updates for a user mouse button hold."),
EO_OP_DESCRIPTION(ELM_OBJ_CLOCK_SUB_ID_PAUSE_SET, "Set whether the given clock widget should be paused or not."),
EO_OP_DESCRIPTION(ELM_OBJ_CLOCK_SUB_ID_PAUSE_GET, "Get if the given clock widget is paused."),
EO_OP_DESCRIPTION_SENTINEL
};
static const Eo_Class_Description class_desc = {
EO_VERSION,
MY_CLASS_NAME,
EO_CLASS_TYPE_REGULAR,
EO_CLASS_DESCRIPTION_OPS(&ELM_OBJ_CLOCK_BASE_ID, op_desc, ELM_OBJ_CLOCK_SUB_ID_LAST),
NULL,
sizeof(Elm_Clock_Smart_Data),
_class_constructor,
NULL
};
EO_DEFINE_CLASS(elm_obj_clock_class_get, &class_desc, ELM_OBJ_LAYOUT_CLASS, NULL);
#include "elm_clock.eo.c"

View File

@ -0,0 +1,262 @@
class Elm_Clock (Elm_Layout)
{
eo_prefix: elm_obj_clock;
properties {
show_am_pm {
set {
/*@
Set if the given clock widget must show hours in military or
am/pm mode
This function sets if the clock must show hours in military or
am/pm mode. In some countries like Brazil the military mode
(00-24h-format) is used, in opposition to the USA, where the
am/pm mode is more commonly used.
@see elm_clock_show_am_pm_get()
@ingroup Clock */
}
get {
/*@
Get if the given clock widget shows hours in military or am/pm
mode
@return @c EINA_TRUE, if in am/pm mode, @c EINA_FALSE if in
military
This function gets if the clock shows hours in military or am/pm
mode.
@see elm_clock_show_am_pm_set() for more details
@ingroup Clock */
}
values {
Eina_Bool am_pm; /*@ @c EINA_TRUE to put it in am/pm mode, @c EINA_FALSE
to military mode */
}
}
first_interval {
set {
/*@
Set the first interval on time updates for a user mouse button hold
on clock widgets' time edition.
This interval value is @b decreased while the user holds the
mouse pointer either incrementing or decrementing a given the
clock digit's value.
This helps the user to get to a given time distant from the
current one easier/faster, as it will start to flip quicker and
quicker on mouse button holds.
The calculation for the next flip interval value, starting from
the one set with this call, is the previous interval divided by
1.05, so it decreases a little bit.
The default starting interval value for automatic flips is
@b 0.85 seconds.
@see elm_clock_first_interval_get()
@ingroup Clock */
}
get {
/*@
Get the first interval on time updates for a user mouse button hold
on clock widgets' time edition.
@return The first interval value, in seconds, set on it
@see elm_clock_first_interval_set() for more details
@ingroup Clock */
}
values {
double interval; /*@ The first interval value in seconds */
}
}
show_seconds {
set {
/*@
Set if the given clock widget must show time with seconds or not
This function sets if the given clock must show or not elapsed
seconds. By default, they are @b not shown.
@see elm_clock_show_seconds_get()
@ingroup Clock */
}
get {
/*@
Get whether the given clock widget is showing time with seconds
or not
@return @c EINA_TRUE if it's showing seconds, @c EINA_FALSE otherwise
This function gets whether @p obj is showing or not the elapsed
seconds.
@see elm_clock_show_seconds_set()
@ingroup Clock */
}
values {
Eina_Bool seconds; /*@ @c EINA_TRUE to show seconds, @c EINA_FALSE otherwise */
}
}
edit {
set {
/*@
Set whether a given clock widget is under <b>edition mode</b> or
under (default) displaying-only mode.
This function makes a clock's time to be editable or not <b>by
user interaction</b>. When in edition mode, clocks @b stop
ticking, until one brings them back to canonical mode. The
elm_clock_edit_mode_set() function will influence which digits
of the clock will be editable.
@note am/pm sheets, if being shown, will @b always be editable
under edition mode.
@see elm_clock_edit_get()
@ingroup Clock */
}
get {
/*@
Retrieve whether a given clock widget is under editing mode
or under (default) displaying-only mode.
@return @c EINA_TRUE, if it's in edition mode, @c EINA_FALSE otherwise
This function retrieves whether the clock's time can be edited
or not by user interaction.
@see elm_clock_edit_set() for more details
@ingroup Clock */
}
values {
Eina_Bool edit; /*@ @c EINA_TRUE to put it in edition, @c EINA_FALSE to
put it back to "displaying only" mode */
}
}
pause {
set {
/*@
Set whether the given clock widget should be paused or not.
This function pauses or starts the clock widget.
@see elm_clock_pause_get()
@ingroup Clock
@since 1.9 */
}
get {
/*@
Get whether the given clock widget is paused.
@return @c EINA_TRUE if it's paused @c EINA_FALSE otherwise
This function gets whether the clock is paused or not.
@see elm_clock_pause_set()
@ingroup Clock
@since 1.9 */
}
values {
Eina_Bool pause; /*@ @c EINA_TRUE to pause clock, @c EINA_FALSE otherwise */
}
}
time {
set {
/*@
Set a clock widget's time, programmatically
This function updates the time that is showed by the clock
widget.
Values @b must be set within the following ranges:
- 0 - 23, for hours
- 0 - 59, for minutes
- 0 - 59, for seconds,
even if the clock is not in "military" mode.
@warning The behavior for values set out of those ranges is @b
undefined.
@ingroup Clock */
}
get {
/*@
Get a clock widget's time values
This function gets the time set for @p obj, returning
it on the variables passed as the arguments to function
@note Use @c NULL pointers on the time values you're not
interested in: they'll be ignored by the function.
@ingroup Clock */
}
values {
int hrs; /*@ The hours to set */
int min; /*@ The minutes to set */
int sec; /*@ The seconds to set */
}
}
edit_mode {
set {
/*@
Set what digits of the given clock widget should be editable
when in edition mode.
@see elm_clock_edit_mode_get()
@ingroup Clock */
}
get {
/*@
Retrieve what digits of the given clock widget should be
editable when in edition mode.
@return Bit mask indicating the digits to be editable
(values in #Elm_Clock_Edit_Mode).
@see elm_clock_edit_mode_set() for more details
@ingroup Clock */
}
values {
Elm_Clock_Edit_Mode digedit; /*@ Bit mask indicating the digits to be editable
(values in #Elm_Clock_Edit_Mode). */
}
}
}
implements {
class::constructor;
Eo_Base::constructor;
Evas_Smart::add;
Evas_Smart::del;
Elm_Widget::focus_next_manager_is;
Elm_Widget::focus_direction_manager_is;
Elm_Widget::access;
Elm_Widget::focus_next;
Elm_Widget::theme_apply;
}
events {
changed;
language,changed;
access,changed;
focused;
unfocused;
}
}

View File

@ -1,3 +1,6 @@
#include "elm_clock.eo.h"
#if 0
#define ELM_OBJ_CLOCK_CLASS elm_obj_clock_class_get()
const Eo_Class *elm_obj_clock_class_get(void) EINA_CONST;
@ -230,3 +233,5 @@ enum
* @ingroup Clock
*/
#define elm_obj_clock_pause_get(ret) ELM_OBJ_CLOCK_ID(ELM_OBJ_CLOCK_SUB_ID_PAUSE_GET), EO_TYPECHECK(Eina_Bool *, ret)
#endif

View File

@ -19,8 +19,8 @@
/**
* Base layout smart data extended with clock instance data.
*/
typedef struct _Elm_Clock_Smart_Data Elm_Clock_Smart_Data;
struct _Elm_Clock_Smart_Data
typedef struct _Elm_Clock_Data Elm_Clock_Data;
struct _Elm_Clock_Data
{
double interval, first_interval;
Elm_Clock_Edit_Mode digedit;
@ -52,7 +52,7 @@ struct _Elm_Clock_Smart_Data
*/
#define ELM_CLOCK_DATA_GET(o, sd) \
Elm_Clock_Smart_Data * sd = eo_data_scope_get(o, ELM_OBJ_CLOCK_CLASS)
Elm_Clock_Data * sd = eo_data_scope_get(o, ELM_OBJ_CLOCK_CLASS)
#define ELM_CLOCK_DATA_GET_OR_RETURN(o, ptr) \
ELM_CLOCK_DATA_GET(o, ptr); \