summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYossi Kantor <yossi.kantor@samsung.com>2014-06-12 17:52:33 +0300
committerYossi Kantor <yossi.kantor@samsung.com>2014-08-03 14:49:46 +0300
commit4a67429167c9ae5003af50ba1101471081b1287e (patch)
treef64e4d5a90920fe32377637f43b1713b757c1243
parent5e20b13e270a92c3b078147f47d7918763cd00a7 (diff)
downloadelementary-4a67429167c9ae5003af50ba1101471081b1287e.tar.gz
Integration of Dayselector
-rw-r--r--src/lib/Makefile.am9
-rw-r--r--src/lib/elm_dayselector.c141
-rw-r--r--src/lib/elm_dayselector_item.eo8
-rw-r--r--src/lib/elm_widget_dayselector.h12
4 files changed, 107 insertions, 63 deletions
diff --git a/src/lib/Makefile.am b/src/lib/Makefile.am
index 83f9a31e0..4b13b957d 100644
--- a/src/lib/Makefile.am
+++ b/src/lib/Makefile.am
@@ -778,7 +778,9 @@ BUILT_SOURCES = \
elm_widget_item.eo.c \
elm_widget_item.eo.h \
elm_color_item.eo.c \
- elm_color_item.eo.h
+ elm_color_item.eo.h \
+ elm_dayselector_item.eo.c \
+ elm_dayselector_item.eo.h
elementaryeolianfilesdir = $(datadir)/eolian/include/elementary-@VMAJ@
elementaryeolianfiles_DATA = \
@@ -872,7 +874,8 @@ elementaryeolianfiles_DATA = \
elm_web.eo \
elm_win.eo \
elm_widget_item.eo \
- elm_color_item.eo
+ elm_color_item.eo \
+ elm_dayselector_item.eo
EXTRA_DIST += \
${elementaryeolianfiles_DATA}
@@ -1029,4 +1032,4 @@ nodist_includesunstable_HEADERS = \
elm_toolbar.eo.legacy.h \
elm_video.eo.legacy.h \
elm_web.eo.legacy.h \
- elm_win.eo.legacy.h \ No newline at end of file
+ elm_win.eo.legacy.h
diff --git a/src/lib/elm_dayselector.c b/src/lib/elm_dayselector.c
index 7698a6478..ced7ca10d 100644
--- a/src/lib/elm_dayselector.c
+++ b/src/lib/elm_dayselector.c
@@ -58,15 +58,16 @@ _elm_dayselector_elm_widget_translate(Eo *obj EINA_UNUSED, Elm_Dayselector_Data
Eina_List *l;
char buf[1024];
struct tm time_daysel;
- Elm_Dayselector_Item *it;
+ Elm_Widobj_Item *eo_item;
if (sd->weekdays_names_set)
return EINA_TRUE;
t = time(NULL);
localtime_r(&t, &time_daysel);
- EINA_LIST_FOREACH(sd->items, l, it)
+ EINA_LIST_FOREACH(sd->items, l, eo_item)
{
+ ELM_DAYSELECTOR_ITEM_DATA_GET(eo_item, it);
time_daysel.tm_wday = it->day;
strftime(buf, sizeof(buf), "%a", &time_daysel);
elm_object_text_set(VIEW(it), buf);
@@ -83,7 +84,7 @@ _update_items(Evas_Object *obj)
Eina_List *l;
Eina_Bool rtl;
unsigned int last_day;
- Elm_Dayselector_Item *it;
+ Elm_Widobj_Item *eo_item;
ELM_DAYSELECTOR_DATA_GET(obj, sd);
@@ -92,8 +93,9 @@ _update_items(Evas_Object *obj)
last_day = last_day % ELM_DAYSELECTOR_MAX;
rtl = elm_widget_mirrored_get(obj);
- EINA_LIST_FOREACH(sd->items, l, it)
+ EINA_LIST_FOREACH(sd->items, l, eo_item)
{
+ ELM_DAYSELECTOR_ITEM_DATA_GET(eo_item, it);
elm_object_signal_emit(VIEW(it), it->day_style, ""); // XXX: compat
elm_object_signal_emit(VIEW(it), it->day_style, "elm");
if (it->day == sd->week_start)
@@ -113,8 +115,9 @@ _update_items(Evas_Object *obj)
static inline unsigned int
_item_location_get(Elm_Dayselector_Data *sd,
- Elm_Dayselector_Item *it)
+ Elm_Widobj_Item *eo_item)
{
+ ELM_DAYSELECTOR_ITEM_DATA_GET(eo_item, it);
return (ELM_DAYSELECTOR_MAX - sd->week_start + it->day) %
ELM_DAYSELECTOR_MAX;
}
@@ -126,19 +129,20 @@ _elm_dayselector_elm_widget_theme_apply(Eo *obj, Elm_Dayselector_Data *sd)
Eina_List *l;
char buf[1024];
- Elm_Dayselector_Item *it;
+ Elm_Widobj_Item *eo_item;
eo_do_super(obj, MY_CLASS, int_ret = elm_obj_widget_theme_apply());
if (!int_ret) return EINA_FALSE;
- EINA_LIST_FOREACH(sd->items, l, it)
+ EINA_LIST_FOREACH(sd->items, l, eo_item)
{
+ ELM_DAYSELECTOR_ITEM_DATA_GET(eo_item, it);
snprintf
(buf, sizeof(buf), "dayselector/%s", elm_object_style_get(obj));
elm_object_style_set(VIEW(it), buf);
snprintf
- (buf, sizeof(buf), "day%d,visible", _item_location_get(sd, it));
+ (buf, sizeof(buf), "day%d,visible", _item_location_get(sd, eo_item));
elm_layout_signal_emit(obj, buf, "elm");
}
@@ -156,22 +160,23 @@ _item_del_cb(void *data,
{
Eina_List *l;
char buf[1024];
- Elm_Dayselector_Item *it;
+ Elm_Widobj_Item *eo_item;
ELM_DAYSELECTOR_DATA_GET(data, sd);
- EINA_LIST_FOREACH(sd->items, l, it)
+ EINA_LIST_FOREACH(sd->items, l, eo_item)
{
+ ELM_DAYSELECTOR_ITEM_DATA_GET(eo_item, it);
if (obj == VIEW(it))
{
- sd->items = eina_list_remove(sd->items, it);
+ sd->items = eina_list_remove(sd->items, eo_item);
eina_stringshare_del(it->day_style);
snprintf(buf, sizeof(buf), "day%d,default",
- _item_location_get(sd, it));
+ _item_location_get(sd, eo_item));
elm_layout_signal_emit(obj, buf, "elm");
VIEW(it) = NULL;
- elm_widget_item_free(it);
+ eo_del(eo_item);
elm_layout_sizing_eval(obj);
break;
@@ -185,8 +190,8 @@ _item_signal_emit_cb(void *data,
const char *emission,
const char *source EINA_UNUSED)
{
- Elm_Dayselector_Item *it = data;
-
+ Elm_Widobj_Item *eo_item = data;
+ ELM_DAYSELECTOR_ITEM_DATA_GET(eo_item, it);
eina_stringshare_replace(&it->day_style, emission);
}
@@ -195,23 +200,25 @@ _item_clicked_cb(void *data,
Evas_Object *obj EINA_UNUSED,
void *event_info EINA_UNUSED)
{
- Elm_Dayselector_Item *it = data;
-
+ Elm_Widobj_Item *eo_item = data;
+ ELM_DAYSELECTOR_ITEM_DATA_GET(eo_item, it);
evas_object_smart_callback_call(WIDGET(it), SIG_CHANGED, (void *)it->day);
}
-static Elm_Dayselector_Item *
+static Elm_Widobj_Item *
_item_find(const Evas_Object *obj,
Elm_Dayselector_Day day)
{
Eina_List *l;
- Elm_Dayselector_Item *it;
+ Elm_Widobj_Item *eo_item;
ELM_DAYSELECTOR_DATA_GET(obj, sd);
- EINA_LIST_FOREACH(sd->items, l, it)
- if (day == it->day) return it;
-
+ EINA_LIST_FOREACH(sd->items, l, eo_item)
+ {
+ ELM_DAYSELECTOR_ITEM_DATA_GET(eo_item, it);
+ if (day == it->day) return eo_item;
+ }
return NULL;
}
@@ -222,7 +229,7 @@ _elm_dayselector_elm_container_content_set(Eo *obj, Elm_Dayselector_Data *sd, co
int day;
char buf[1024];
- Elm_Dayselector_Item *it = NULL;
+ Elm_Widobj_Item *eo_item = NULL;
if (strcmp(elm_object_widget_type_get(content), "Elm_Check"))
return EINA_FALSE;
@@ -232,10 +239,11 @@ _elm_dayselector_elm_container_content_set(Eo *obj, Elm_Dayselector_Data *sd, co
day = atoi(item + (strlen(item) - 1));
if (day < 0 || day > ELM_DAYSELECTOR_MAX) return EINA_FALSE;
- it = _item_find(obj, day);
- if (it)
+ eo_item = _item_find(obj, day);
+ if (eo_item)
{
- snprintf(buf, sizeof(buf), "day%d", _item_location_get(sd, it));
+ ELM_DAYSELECTOR_ITEM_DATA_GET(eo_item, it);
+ snprintf(buf, sizeof(buf), "day%d", _item_location_get(sd, eo_item));
eo_do_super(obj, MY_CLASS, int_ret = elm_obj_container_content_set(buf, content));
if (!int_ret) return EINA_FALSE;
@@ -247,37 +255,39 @@ _elm_dayselector_elm_container_content_set(Eo *obj, Elm_Dayselector_Data *sd, co
}
else
{
- it = elm_widget_item_new(obj, Elm_Dayselector_Item);
+ eo_item = eo_add(ELM_DAYSELECTOR_ITEM_CLASS, obj);
+ ELM_DAYSELECTOR_ITEM_DATA_GET(eo_item, it);
it->day = day;
- snprintf(buf, sizeof(buf), "day%d", _item_location_get(sd, it));
+ snprintf(buf, sizeof(buf), "day%d", _item_location_get(sd, eo_item));
eo_do_super(obj, MY_CLASS, int_ret = elm_obj_container_content_set(buf, content));
if (!int_ret)
{
- elm_widget_item_free(it);
+ eo_del(eo_item);
return EINA_FALSE;
}
- sd->items = eina_list_append(sd->items, it);
+ sd->items = eina_list_append(sd->items, eo_item);
VIEW(it) = content;
}
- snprintf(buf, sizeof(buf), "day%d,visible", _item_location_get(sd, it));
+ snprintf(buf, sizeof(buf), "day%d,visible", _item_location_get(sd, eo_item));
elm_layout_signal_emit(obj, buf, "elm");
- evas_object_smart_callback_add(VIEW(it), "changed", _item_clicked_cb, it);
+ ELM_DAYSELECTOR_ITEM_DATA_GET(eo_item, it);
+ evas_object_smart_callback_add(VIEW(it), "changed", _item_clicked_cb, eo_item);
evas_object_event_callback_add
(VIEW(it), EVAS_CALLBACK_DEL, _item_del_cb, obj);
elm_object_signal_callback_add
- (VIEW(it), ITEM_TYPE_WEEKDAY_DEFAULT, "*", _item_signal_emit_cb, it);
+ (VIEW(it), ITEM_TYPE_WEEKDAY_DEFAULT, "*", _item_signal_emit_cb, eo_item);
elm_object_signal_callback_add
- (VIEW(it), ITEM_TYPE_WEEKDAY_STYLE1, "*", _item_signal_emit_cb, it);
+ (VIEW(it), ITEM_TYPE_WEEKDAY_STYLE1, "*", _item_signal_emit_cb, eo_item);
elm_object_signal_callback_add
- (VIEW(it), ITEM_TYPE_WEEKEND_DEFAULT, "*", _item_signal_emit_cb, it);
+ (VIEW(it), ITEM_TYPE_WEEKEND_DEFAULT, "*", _item_signal_emit_cb, eo_item);
elm_object_signal_callback_add
- (VIEW(it), ITEM_TYPE_WEEKEND_STYLE1, "*", _item_signal_emit_cb, it);
+ (VIEW(it), ITEM_TYPE_WEEKEND_STYLE1, "*", _item_signal_emit_cb, eo_item);
elm_layout_sizing_eval(obj);
_update_items(obj);
@@ -285,26 +295,34 @@ _elm_dayselector_elm_container_content_set(Eo *obj, Elm_Dayselector_Data *sd, co
return EINA_TRUE;
}
+EOLIAN static void
+_elm_dayselector_item_eo_base_constructor(Eo *obj, Elm_Dayselector_Item_Data *it)
+{
+ eo_do_super(obj, ELM_DAYSELECTOR_ITEM_CLASS, eo_constructor());
+ it->base = eo_data_scope_get(obj, ELM_WIDGET_ITEM_CLASS);
+}
+
EOLIAN static Evas_Object*
_elm_dayselector_elm_container_content_unset(Eo *obj, Elm_Dayselector_Data *sd, const char *item)
{
int day;
char buf[1024];
Evas_Object *content;
- Elm_Dayselector_Item *it = NULL;
+ Elm_Widobj_Item *eo_item = NULL;
day = atoi(item + (strlen(item) - 1));
if (day < 0 || day > ELM_DAYSELECTOR_MAX) return NULL;
- it = _item_find(obj, day);
- if (!it) return NULL;
+ eo_item = _item_find(obj, day);
+ if (!eo_item) return NULL;
+ ELM_DAYSELECTOR_ITEM_DATA_GET(eo_item, it);
content = VIEW(it);
eo_do_super(obj, MY_CLASS, content = elm_obj_container_content_unset(buf));
if (!content) return NULL;
- sd->items = eina_list_remove(sd->items, it);
+ sd->items = eina_list_remove(sd->items, eo_item);
evas_object_smart_callback_del(content, "changed", _item_clicked_cb);
evas_object_event_callback_del(content, EVAS_CALLBACK_DEL, _item_del_cb);
@@ -317,11 +335,11 @@ _elm_dayselector_elm_container_content_unset(Eo *obj, Elm_Dayselector_Data *sd,
elm_object_signal_callback_del
(content, ITEM_TYPE_WEEKEND_STYLE1, "*", _item_signal_emit_cb);
- snprintf(buf, sizeof(buf), "day%d,default", _item_location_get(sd, it));
+ snprintf(buf, sizeof(buf), "day%d,default", _item_location_get(sd, eo_item));
elm_layout_signal_emit(obj, buf, "elm");
VIEW(it) = NULL;
- elm_widget_item_free(it);
+ eo_del(eo_item);
elm_layout_sizing_eval(obj);
@@ -332,7 +350,7 @@ static void
_items_style_set(Evas_Object *obj)
{
Eina_List *l;
- Elm_Dayselector_Item *it;
+ Elm_Widobj_Item *eo_item;
unsigned int weekend_last;
ELM_DAYSELECTOR_DATA_GET(obj, sd);
@@ -341,8 +359,9 @@ _items_style_set(Evas_Object *obj)
if (weekend_last >= ELM_DAYSELECTOR_MAX)
weekend_last = weekend_last % ELM_DAYSELECTOR_MAX;
- EINA_LIST_FOREACH(sd->items, l, it)
+ EINA_LIST_FOREACH(sd->items, l, eo_item)
{
+ ELM_DAYSELECTOR_ITEM_DATA_GET(eo_item, it);
if (weekend_last >= sd->weekend_start)
{
if ((it->day >= sd->weekend_start) && (it->day <= weekend_last))
@@ -422,13 +441,14 @@ _elm_dayselector_evas_object_smart_add(Eo *obj, Elm_Dayselector_Data *priv)
EOLIAN static void
_elm_dayselector_evas_object_smart_del(Eo *obj, Elm_Dayselector_Data *sd)
{
- Elm_Dayselector_Item *it;
+ Elm_Widobj_Item *eo_item;
- EINA_LIST_FREE(sd->items, it)
+ EINA_LIST_FREE(sd->items, eo_item)
{
- sd->items = eina_list_remove(sd->items, it);
+ ELM_DAYSELECTOR_ITEM_DATA_GET(eo_item, it);
+ sd->items = eina_list_remove(sd->items, eo_item);
eina_stringshare_del(it->day_style);
- elm_widget_item_free(it);
+ eo_del(eo_item);
}
/* handles freeing sd */
@@ -456,13 +476,15 @@ _elm_dayselector_eo_base_constructor(Eo *obj, Elm_Dayselector_Data *_pd EINA_UNU
EOLIAN static void
_elm_dayselector_day_selected_set(Eo *obj, Elm_Dayselector_Data *_pd EINA_UNUSED, Elm_Dayselector_Day day, Eina_Bool selected)
{
- elm_check_state_set(VIEW(_item_find(obj, day)), selected);
+ ELM_DAYSELECTOR_ITEM_DATA_GET((_item_find(obj, day)), it);
+ elm_check_state_set(VIEW(it), selected);
}
EOLIAN static Eina_Bool
_elm_dayselector_day_selected_get(Eo *obj, Elm_Dayselector_Data *_pd EINA_UNUSED, Elm_Dayselector_Day day)
{
- return elm_check_state_get(VIEW(_item_find(obj, day)));
+ ELM_DAYSELECTOR_ITEM_DATA_GET((_item_find(obj, day)), it);
+ return elm_check_state_get(VIEW(it));
}
EOLIAN static void
@@ -471,13 +493,14 @@ _elm_dayselector_week_start_set(Eo *obj, Elm_Dayselector_Data *sd, Elm_Dayselect
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
Eina_List *l;
char buf[1024];
- Elm_Dayselector_Item *it;
+ Elm_Widobj_Item *eo_item;
/* just shuffling items, so swalling them directly */
sd->week_start = day;
- EINA_LIST_FOREACH(sd->items, l, it)
+ EINA_LIST_FOREACH(sd->items, l, eo_item)
{
- snprintf(buf, sizeof(buf), "day%d", _item_location_get(sd, it));
+ ELM_DAYSELECTOR_ITEM_DATA_GET(eo_item, it);
+ snprintf(buf, sizeof(buf), "day%d", _item_location_get(sd, eo_item));
edje_object_part_swallow
(wd->resize_obj, buf, VIEW(it));
}
@@ -527,7 +550,7 @@ _elm_dayselector_weekdays_names_set(Eo *obj, Elm_Dayselector_Data *sd, const cha
int idx;
time_t now;
struct tm time_daysel;
- Elm_Dayselector_Item *it;
+ Elm_Widobj_Item *eo_item;
char buf[1024];
if (weekdays)
@@ -541,7 +564,8 @@ _elm_dayselector_weekdays_names_set(Eo *obj, Elm_Dayselector_Data *sd, const cha
for (idx = 0; idx < ELM_DAYSELECTOR_MAX; idx++)
{
- it = _item_find(obj, idx);
+ eo_item = _item_find(obj, idx);
+ ELM_DAYSELECTOR_ITEM_DATA_GET(eo_item, it);
if (sd->weekdays_names_set)
elm_object_text_set(VIEW(it), weekdays[idx]);
@@ -559,12 +583,13 @@ _elm_dayselector_weekdays_names_get(Eo *obj, Elm_Dayselector_Data *sd EINA_UNUSE
{
int idx;
const char *weekday;
- Elm_Dayselector_Item *it;
+ Elm_Widobj_Item *eo_item;
Eina_List *weekdays = NULL;
for (idx = 0; idx < ELM_DAYSELECTOR_MAX; idx++)
{
- it = _item_find(obj, idx);
+ eo_item = _item_find(obj, idx);
+ ELM_DAYSELECTOR_ITEM_DATA_GET(eo_item, it);
weekday = elm_object_text_get(VIEW(it));
weekdays = eina_list_append(weekdays, eina_stringshare_add(weekday));
}
@@ -584,3 +609,5 @@ _elm_dayselector_class_constructor(Eo_Class *klass)
}
#include "elm_dayselector.eo.c"
+#include "elm_dayselector_item.eo.c"
+
diff --git a/src/lib/elm_dayselector_item.eo b/src/lib/elm_dayselector_item.eo
new file mode 100644
index 000000000..0d9179e2e
--- /dev/null
+++ b/src/lib/elm_dayselector_item.eo
@@ -0,0 +1,8 @@
+class Elm_Dayselector_Item(Elm_Widget_Item)
+{
+ legacy_prefix: null;
+ eo_prefix: elm_dayselector_item;
+ implements {
+ Eo_Base::constructor;
+ }
+} \ No newline at end of file
diff --git a/src/lib/elm_widget_dayselector.h b/src/lib/elm_widget_dayselector.h
index 792e9dc24..3880db676 100644
--- a/src/lib/elm_widget_dayselector.h
+++ b/src/lib/elm_widget_dayselector.h
@@ -2,6 +2,9 @@
#define ELM_WIDGET_DAYSELECTOR_H
#include "Elementary.h"
+#include "elm_dayselector_item.eo.h"
+
+#include "elm_object_item_migration_temp.h"
/**
* @addtogroup Widget
@@ -27,10 +30,10 @@ struct _Elm_Dayselector_Data
Eina_Bool weekdays_names_set : 1;
};
-typedef struct _Elm_Dayselector_Item Elm_Dayselector_Item;
-struct _Elm_Dayselector_Item
+typedef struct _Elm_Dayselector_Item_Data Elm_Dayselector_Item_Data;
+struct _Elm_Dayselector_Item_Data
{
- ELM_WIDGET_ITEM;
+ Elm_Widget_Item_Data *base;
Elm_Dayselector_Day day;
const char *day_style;
};
@@ -64,4 +67,7 @@ struct _Elm_Dayselector_Item
if (EINA_UNLIKELY(!eo_isa((obj), ELM_DAYSELECTOR_CLASS))) \
return
+#define ELM_DAYSELECTOR_ITEM_DATA_GET(o, sd) \
+ Elm_Dayselector_Item_Data * sd = eo_data_scope_get(o, ELM_DAYSELECTOR_ITEM_CLASS)
+
#endif