[elm] Fix index example.

note to self: were on drugs here?



SVN revision: 71563
This commit is contained in:
Gustavo Lima Chaves 2012-05-30 17:41:48 +00:00
parent 06f5dda19b
commit 448b23eff9
1 changed files with 32 additions and 31 deletions

View File

@ -10,6 +10,7 @@
*/ */
#include <Elementary.h> #include <Elementary.h>
#include <assert.h>
struct example_data struct example_data
{ {
@ -24,71 +25,67 @@ static const char *dict[] = \
}; };
static void static void
_index_item_del(void *data, _index_item_del(void *data,
Evas_Object *obj, Evas_Object *obj,
void *event_info) void *event_info)
{ {
fprintf(stdout, "Deleting associated list node (%s). Comparing index " fprintf(stdout, "Deleting index node (%s). Comparing index "
"item data reported via callback with the one returned by " "item data reported via callback with the one returned by "
"index's API on items: %s.\n", "index's API on items: %s.\n",
elm_object_item_text_get(data), elm_index_item_letter_get(event_info),
data == elm_object_item_data_get(event_info) ? "OK" : data == elm_object_item_data_get(event_info) ? "OK" :
"FAIL, something went wrong"); "FAIL, something went wrong");
elm_object_item_del(data);
} }
/* delete an index item */ /* delete an index item */
static void static void
_item_del(void *data, _item_del(void *data,
Evas_Object *obj, Evas_Object *obj,
void *event_info) void *event_info)
{ {
Elm_Object_Item *iit; Elm_Object_Item *iit = elm_index_selected_item_get(d.index, 0);
Elm_Object_Item *lit = elm_index_selected_item_get(d.index, 0);
iit = elm_index_item_find(d.index, lit);
if (!iit) return; if (!iit) return;
fprintf(stdout, "Deleting last selected index item, which had letter" fprintf(stdout, "Deleting last selected index item, which had letter"
" %s (pointing to %s)\n", elm_index_item_letter_get(iit), " %s (pointing to %p)\n", elm_index_item_letter_get(iit),
elm_object_item_text_get(lit)); elm_object_item_data_get(iit));
elm_object_item_del(lit); elm_object_item_del(iit);
} }
static void static void
_item_del_all(void *data, _item_del_all(void *data,
Evas_Object *obj, Evas_Object *obj,
void *event_info) void *event_info)
{ {
elm_index_item_clear(d.index); elm_index_item_clear(d.index);
} }
static void static void
_active_set(void *data, _active_set(void *data,
Evas_Object *obj, Evas_Object *obj,
void *event_info) void *event_info)
{ {
elm_index_autohide_disabled_set(d.index, !elm_index_autohide_disabled_get(d.index)); elm_index_autohide_disabled_set
(d.index, !elm_index_autohide_disabled_get(d.index));
fprintf(stdout, "Toggling index programmatically.\n"); fprintf(stdout, "Toggling index programmatically.\n");
} }
/* "delay,changed" hook */ /* "delay,changed" hook */
static void static void
_index_changed(void *data, _index_changed(void *data,
Evas_Object *obj, Evas_Object *obj,
void *event_info) void *event_info)
{ {
elm_list_item_bring_in(event_info); elm_list_item_bring_in(elm_object_item_data_get(event_info));
} }
static void static void
_index_selected(void *data, _index_selected(void *data,
Evas_Object *obj, Evas_Object *obj,
void *event_info) void *event_info)
{ {
Elm_Object_Item *lit = event_info; Elm_Object_Item *lit = event_info;
@ -99,15 +96,15 @@ _index_selected(void *data,
} }
static void static void
_on_done(void *data, _on_done(void *data,
Evas_Object *obj, Evas_Object *obj,
void *event_info) void *event_info)
{ {
elm_exit(); elm_exit();
} }
EAPI_MAIN int EAPI_MAIN int
elm_main(int argc, elm_main(int argc,
char **argv) char **argv)
{ {
Evas_Object *win, *bg, *hbox, *vbox, *bt, *sep; Evas_Object *win, *bg, *hbox, *vbox, *bt, *sep;
@ -149,15 +146,18 @@ elm_main(int argc,
if (curr != dict[i][0]) if (curr != dict[i][0])
{ {
Elm_Object_Item *index_it; Elm_Object_Item *index_it, *it;
char buf[32]; char buf[32];
curr = dict[i][0]; curr = dict[i][0];
/* indexing by first letters */ /* indexing by first letters */
snprintf(buf, sizeof(buf), "%c", curr); snprintf(buf, sizeof(buf), "%c", curr);
elm_index_item_append(d.index, buf, NULL, lit); index_it = elm_index_item_append(d.index, buf, NULL, lit);
index_it = elm_index_item_find(d.index, lit);
/* this is here just to demostrate the API call */
it = elm_index_item_find(d.index, lit);
assert(it == index_it);
elm_object_item_del_cb_set(index_it, _index_item_del); elm_object_item_del_cb_set(index_it, _index_item_del);
} }
@ -206,4 +206,5 @@ elm_main(int argc,
return 0; return 0;
} }
ELM_MAIN() ELM_MAIN()