#include <Elementary.h>
static const char *items[] =
{
   "Judith",
   "Paulina",
   "Cathy",
   "Vendella",
   "Naomi",
   "Ashley",
   "Stacey",
   "Gail"
};
static void
_index_changed(void        *data,
               Evas_Object *obj,
               void        *event_info)
{
   elm_gengrid_item_bring_in(item, ELM_GENGRID_ITEM_SCROLLTO_IN);
}
static char *
_grid_label_get(void        *data,
                Evas_Object *obj,
                const char  *part)
{
   int idx = (int)(uintptr_t)data;
   return strdup(items[idx]);
}
Evas_Object *
_grid_content_get(void        *data,
                  Evas_Object *obj,
                  const char  *part)
{
   if (!strcmp(part, "elm.swallow.icon"))
     {
        char buf[PATH_MAX];
                 "sky_01.jpg");
        evas_object_size_hint_aspect_set(icon, EVAS_ASPECT_CONTROL_VERTICAL, 1,
                                         1);
        evas_object_show(icon);
        return icon;
     }
   return NULL;
}
static int
_index_icmp(const void *data1,
            const void *data2)
{
   const char *label1, *label2;
   label1 = elm_index_item_letter_get(index_it1);
   label2 = elm_index_item_letter_get(index_it2);
   return strcasecmp(label1, label2);
}
EAPI_MAIN int
elm_main(int    argc,
         char **argv)
{
   Evas_Object *win, *grid, *idx;
   unsigned int i;
   gic.item_style = "default";
   gic.func.text_get = _grid_label_get;
   gic.func.content_get = _grid_content_get;
   gic.func.state_get = NULL;
   gic.func.del = NULL;
   evas_object_size_hint_weight_set(grid, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
   evas_object_show(grid);
   evas_object_size_hint_weight_set(idx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
   evas_object_show(idx);
   for (i = 0; i < (sizeof(items) / sizeof(items[0])); i++)
     {
        char buf[32];
        
        snprintf(buf, sizeof(buf), "%c", items[i][0]);
     }
   evas_object_smart_callback_add(idx, "delay,changed", _index_changed, NULL);
   evas_object_resize(win, 320, 300);
   evas_object_show(win);
   return 0;
}