From 7ce70552db9b6b94ce427d8493b3f0d173e50e37 Mon Sep 17 00:00:00 2001 From: "jh0506.yun" Date: Fri, 12 Nov 2010 13:33:51 +0900 Subject: [PATCH] edje external elm_page_control added --- data/edje_externals/Makefile.am | 1 + data/edje_externals/ico_page_control.png | Bin 0 -> 193 bytes data/edje_externals/icons.edc | 1 + src/edje_externals/Makefile.am | 1 + src/edje_externals/elm_page_control.c | 129 +++++++++++++++++++++++++++++++ src/edje_externals/modules.inc | 1 + 6 files changed, 133 insertions(+) create mode 100755 data/edje_externals/ico_page_control.png create mode 100644 src/edje_externals/elm_page_control.c diff --git a/data/edje_externals/Makefile.am b/data/edje_externals/Makefile.am index fba76e6..28ce2d8 100644 --- a/data/edje_externals/Makefile.am +++ b/data/edje_externals/Makefile.am @@ -24,6 +24,7 @@ ico_icon.png \ ico_list.png \ ico_map.png \ ico_notepad.png \ +ico_page_control.png \ ico_photocam.png \ ico_progressbar.png \ ico_radio.png \ diff --git a/data/edje_externals/ico_page_control.png b/data/edje_externals/ico_page_control.png new file mode 100755 index 0000000000000000000000000000000000000000..b1300d0dd59df6e00991407d8c5de85fc1e9cfd2 GIT binary patch literal 193 zcmeAS@N?(olHy`uVBq!ia0vp^;vmey1SIo4oWBDp#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6;>1s;*b3=DjSL74G){)!Z!V3?gTe~DWM4fWl}r8 literal 0 HcmV?d00001 diff --git a/data/edje_externals/icons.edc b/data/edje_externals/icons.edc index a7dcd24..9e219b0 100644 --- a/data/edje_externals/icons.edc +++ b/data/edje_externals/icons.edc @@ -26,6 +26,7 @@ ICON("list") ICON("map") ICON("nocontents") ICON("notepad") +ICON("page_control") ICON("photocam") ICON("progressbar") ICON("radio") diff --git a/src/edje_externals/Makefile.am b/src/edje_externals/Makefile.am index ce7e843..bbd9077 100644 --- a/src/edje_externals/Makefile.am +++ b/src/edje_externals/Makefile.am @@ -43,6 +43,7 @@ elm_list.c \ elm_map.c \ elm_nocontents.c \ elm_notepad.c \ +elm_page_control.c \ elm_photocam.c \ elm_progressbar.c \ elm_radio.c \ diff --git a/src/edje_externals/elm_page_control.c b/src/edje_externals/elm_page_control.c new file mode 100644 index 0000000..b61e098 --- /dev/null +++ b/src/edje_externals/elm_page_control.c @@ -0,0 +1,129 @@ +#include + +#include "private.h" + +typedef struct _Elm_Params_Icon +{ + Eina_Bool page_count_exists; + unsigned int page_count; + Eina_Bool page_id_exists; + unsigned int page_id; +} Elm_Params_Icon; + +static unsigned int page_count_bk; + +static void +external_page_control_state_set(void *data __UNUSED__, Evas_Object *obj, const void *from_params, const void *to_params, float pos __UNUSED__) +{ + const Elm_Params_Icon *p; + + if (to_params) p = to_params; + else if (from_params) p = from_params; + else return; + + if (p->page_count_exists) + { + elm_page_control_page_count_set(obj, p->page_count); + page_count_bk = p->page_count; + } + if (p->page_id_exists) + elm_page_control_page_id_set(obj, p->page_id-1); +} + +static Eina_Bool +external_page_control_param_set(void *data __UNUSED__, Evas_Object *obj, const Edje_External_Param *param) +{ + if (!strcmp(param->name, "page count") + && param->type == EDJE_EXTERNAL_PARAM_TYPE_INT) + { + elm_page_control_page_count_set(obj, param->i); + page_count_bk = param->i; + return EINA_TRUE; + } + else if (!strcmp(param->name, "page id") + && param->type == EDJE_EXTERNAL_PARAM_TYPE_INT) + { + elm_page_control_page_id_set(obj, param->i-1); + return EINA_TRUE; + } + + ERR("unknown parameter '%s' of type '%s'", + param->name, edje_external_param_type_str(param->type)); + + return EINA_FALSE; +} + +static Eina_Bool +external_page_control_param_get(void *data __UNUSED__, const Evas_Object *obj, Edje_External_Param *param) +{ + if (!strcmp(param->name, "page count") + && param->type == EDJE_EXTERNAL_PARAM_TYPE_INT) + { + param->i = page_count_bk; + return EINA_TRUE; + } + else if (!strcmp(param->name, "page id") + && param->type == EDJE_EXTERNAL_PARAM_TYPE_INT) + { + param->i = elm_page_control_page_id_get(obj); + return EINA_TRUE; + } + + ERR("unknown parameter '%s' of type '%s'", + param->name, edje_external_param_type_str(param->type)); + + return EINA_FALSE; +} + +static void * +external_page_control_params_parse(void *data __UNUSED__, Evas_Object *obj __UNUSED__, const Eina_List *params) +{ + Elm_Params_Icon *mem; + Edje_External_Param *param; + const Eina_List *l; + + mem = calloc(1, sizeof(Elm_Params_Icon)); + if (!mem) + return NULL; + + EINA_LIST_FOREACH(params, l, param) + { + if (!strcmp(param->name, "page count")) + { + mem->page_count = param->i; + mem->page_count_exists = EINA_TRUE; + } + else if (!strcmp(param->name, "page id")) + { + mem->page_id = param->i; + mem->page_id_exists = EINA_TRUE; + } + } + + return mem; +} + +static Evas_Object *external_page_control_content_get(void *data __UNUSED__, + const Evas_Object *obj, const char *content) +{ + ERR("so content"); + return NULL; +} + +static void +external_page_control_params_free(void *params) +{ + Elm_Params_Icon *mem = params; + + free(mem); +} + +static Edje_External_Param_Info external_page_control_params[] = { + EDJE_EXTERNAL_PARAM_INFO_INT("page count"), + EDJE_EXTERNAL_PARAM_INFO_INT("page id"), + EDJE_EXTERNAL_PARAM_INFO_SENTINEL +}; + +DEFINE_EXTERNAL_ICON_ADD(page_control, "page_control"); +DEFINE_EXTERNAL_TYPE_SIMPLE(page_control, "Page_control"); + diff --git a/src/edje_externals/modules.inc b/src/edje_externals/modules.inc index 0450277..29610ad 100644 --- a/src/edje_externals/modules.inc +++ b/src/edje_externals/modules.inc @@ -16,6 +16,7 @@ DEFINE_TYPE(navigationbar) DEFINE_TYPE(navigationbar_ex) DEFINE_TYPE(nocontents) DEFINE_TYPE(notepad) +DEFINE_TYPE(page_control) DEFINE_TYPE(pager) DEFINE_TYPE(photocam) DEFINE_TYPE(progressbar) -- 2.7.4