kimcinoo pushed a commit to branch master.
commit 8291544ce37e52adbfe7f48c9c89bd083bf9944f
Author: Shinwoo Kim <[email protected]>
Date: Fri May 3 19:50:08 2013 +0900
[access] enhance test lines
---
src/bin/test.c | 2 +
src/bin/test_access.c | 212 ++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 214 insertions(+)
diff --git a/src/bin/test.c b/src/bin/test.c
index f4f6d23..0e30d84 100644
--- a/src/bin/test.c
+++ b/src/bin/test.c
@@ -11,6 +11,7 @@ int _log_domain = -1;
/* all tests prototypes */
void test_access(void *data, Evas_Object *obj, void *event_info);
+void test_access2(void *data, Evas_Object *obj, void *event_info);
void test_bg_plain(void *data, Evas_Object *obj, void *event_info);
void test_bg_image(void *data, Evas_Object *obj, void *event_info);
void test_bg_options(void *data, Evas_Object *obj, void *event_info);
@@ -747,6 +748,7 @@ add_tests:
ADD_TEST(NULL, "Miscellaneous", "Floating Objects", test_floating);
ADD_TEST(NULL, "Miscellaneous", "Configuration", test_config);
ADD_TEST(NULL, "Miscellaneous", "Accessibility", test_access);
+ ADD_TEST(NULL, "Miscellaneous", "Accessibility2", test_access2);
#undef ADD_TEST
diff --git a/src/bin/test_access.c b/src/bin/test_access.c
index 8bb8200..eec391e 100644
--- a/src/bin/test_access.c
+++ b/src/bin/test_access.c
@@ -10,9 +10,221 @@ _cleanup_cb(void *data __UNUSED__, Evas *e __UNUSED__,
Evas_Object *obj __UNUSED
elm_config_access_set(EINA_FALSE);
}
+typedef struct _Item_Data
+{
+ Elm_Object_Item *item;
+ int index;
+} Item_Data;
+
+static Elm_Genlist_Item_Class *itc1, *itc2;
+char *gl_access_text_get(void *data, Evas_Object *obj __UNUSED__, const char
*part __UNUSED__)
+{
+ char buf[256];
+ Item_Data *id = data;
+ snprintf(buf, sizeof(buf), "Item # %d", id->index);
+ return strdup(buf);
+}
+
+Evas_Object *gl_access_content_get(void *data __UNUSED__, Evas_Object *obj,
const char *part)
+{
+ char buf[PATH_MAX];
+ Evas_Object *bt;
+
+ if (!strcmp(part, "elm.swallow.end"))
+ {
+ bt = elm_button_add(obj);
+ evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND,
EVAS_HINT_EXPAND);
+ elm_layout_text_set(bt, NULL, "OK");
+ }
+ else
+ {
+ bt = elm_icon_add(obj);
+ snprintf(buf, sizeof(buf), "%s/images/logo_small.png",
elm_app_data_dir_get());
+ elm_image_file_set(bt, buf, NULL);
+ evas_object_size_hint_aspect_set(bt, EVAS_ASPECT_CONTROL_VERTICAL, 1,
1);
+ }
+
+ return bt;
+}
+
+static Elm_Gengrid_Item_Class *gic;
+
+Evas_Object *
+grid_access_content_get(void *data, Evas_Object *obj, const char *part)
+{
+ char buf[PATH_MAX];
+ Evas_Object *ic;
+ const Item_Data *id = data;
+
+ if (!strcmp(part, "elm.swallow.icon"))
+ {
+ ic = elm_icon_add(obj);
+ elm_object_scale_set(ic, 0.5);
+ snprintf(buf, sizeof(buf), "%s/images/icon_%02i.png",
elm_app_data_dir_get(), (id->index % 4));
+ elm_image_file_set(ic, buf, NULL);
+ elm_image_resizable_set(ic, 0, 0);
+ evas_object_size_hint_weight_set(ic, EVAS_HINT_EXPAND,
EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(ic, 0.5, 0.5);
+ evas_object_show(ic);
+ return ic;
+ }
+ return NULL;
+}
+
+Evas_Object *gl_access_content_full_get(void *data __UNUSED__, Evas_Object
*obj, const char *part)
+{
+ int i;
+ Evas_Object *grid;
+
+ if (strcmp(part, "elm.swallow.content") != 0) return NULL;
+
+ grid = elm_gengrid_add(obj);
+ elm_gengrid_item_size_set(grid,
+ elm_config_scale_get() * 100,
+ elm_config_scale_get() * 100);
+ elm_gengrid_horizontal_set(grid, EINA_FALSE);
+ elm_gengrid_reorder_mode_set(grid, EINA_TRUE);
+ evas_object_size_hint_weight_set(grid, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(grid, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+ gic = elm_gengrid_item_class_new();
+ gic->item_style = "default";
+ gic->func.text_get = NULL;
+ gic->func.content_get = grid_access_content_get;
+ gic->func.state_get = NULL;
+ gic->func.del = NULL;
+
+ for (i = 0; i < 4; i++)
+ {
+ Item_Data *id = calloc(sizeof(Item_Data), 1);
+ id->index = i;
+
+ elm_gengrid_item_append(grid, gic, id, NULL, NULL);
+ }
+ elm_gengrid_item_class_free(gic);
+
+ evas_object_size_hint_min_set(grid, 300 * elm_config_scale_get(),
+ 150 * elm_config_scale_get());
+ return grid;
+}
+
+static void _realized(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void
*ei)
+{
+ Evas_Object *content, *bt;
+ Eina_List *items;
+ items = NULL;
+
+ if (!ei) return;
+ Elm_Object_Item *item = ei;
+
+
+ const Elm_Genlist_Item_Class *itc = elm_genlist_item_item_class_get(item);
+
+ if (!strcmp(itc->item_style, "full"))
+ {
+ /* unregister item itself */
+ elm_object_item_access_unregister(item);
+
+ /* convey highlight to its content */
+ content = elm_object_item_part_content_get(item,
"elm.swallow.content");
+ if (!content) return;
+
+ items = eina_list_append(items, content);
+ }
+ else
+ {
+ bt = elm_object_item_part_content_get(item, "elm.swallow.end");
+ if (!bt) return;
+
+ items = eina_list_append(items, bt);
+ }
+
+ elm_object_item_access_order_set(item, items);
+}
+
void
test_access(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void
*event_info __UNUSED__)
{
+ int i;
+ Evas_Object *win, *bx, *gl;
+
+ win = elm_win_util_standard_add("access", "Access");
+ elm_win_autodel_set(win, EINA_TRUE);
+ evas_object_event_callback_add(win, EVAS_CALLBACK_FREE, _cleanup_cb, NULL);
+
+ elm_config_access_set(EINA_TRUE);
+
+ bx = elm_box_add(win);
+ evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(bx, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_box_homogeneous_set(bx, EINA_TRUE);
+ elm_box_horizontal_set(bx, EINA_TRUE);
+ elm_win_resize_object_add(win, bx);
+ evas_object_show(bx);
+
+ gl = elm_genlist_add(win);
+ evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_box_pack_end(bx, gl);
+ evas_object_show(gl);
+
+ evas_object_smart_callback_add(gl, "realized", _realized, NULL);
+
+ itc1 = elm_genlist_item_class_new();
+ itc1->item_style = "default";
+ itc1->func.text_get = gl_access_text_get;
+ itc1->func.content_get = gl_access_content_get;
+ itc1->func.state_get = NULL;
+ itc1->func.del = NULL;
+
+ itc2 = elm_genlist_item_class_new();
+ itc2->item_style = "full";
+ itc2->func.text_get = NULL;
+ itc2->func.content_get = gl_access_content_full_get;
+ itc2->func.state_get = NULL;
+ itc2->func.del = NULL;
+
+ for (i = 1; i < 10; i++)
+ {
+ Item_Data *id = calloc(sizeof(Item_Data), 1);
+ id->index = i;
+
+ if (i % 4)
+ {
+ elm_genlist_item_append(
+ gl,
+ itc1,
+ id,
+ NULL/* parent */,
+ ELM_GENLIST_ITEM_NONE,
+ NULL/* func */,
+ NULL/* func data */
+ );
+ }
+ else
+ {
+ elm_genlist_item_append(
+ gl,
+ itc2,
+ id,
+ NULL/* parent */,
+ ELM_GENLIST_ITEM_NONE,
+ NULL/* func */,
+ NULL/* func data */
+ );
+ }
+ }
+
+ elm_genlist_item_class_free(itc1);
+ elm_genlist_item_class_free(itc2);
+ evas_object_resize(win, 500, 400);
+ evas_object_show(win);
+}
+
+void
+test_access2(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void
*event_info __UNUSED__)
+{
int i, j, k;
char buf[PATH_MAX];
Evas_Object *win, *bx, *sc, *ly, *ly2, *ic;
--
------------------------------------------------------------------------------
Get 100% visibility into Java/.NET code with AppDynamics Lite
It's a free troubleshooting tool designed for production
Get down to code-level detail for bottlenecks, with <2% overhead.
Download for free and get started troubleshooting in minutes.
http://p.sf.net/sfu/appdyn_d2d_ap2