flipselector_example(3)

NAME
flipselector_example - Flip selector widget example This code places an Elementary flip selector widget on a window, along with two buttons trigerring actions on it (though its API).

The selector is being populated with the following items:

   static const char *lbl[] =
     {
        "Elementary",
        "Evas",
        "Eina",
        "Edje",
        "Eet",
        "Ecore",
        "Efreet",
        "Eldbus"
     };

 Next, we create it, populating it with those items and registering two (smart) callbacks on it:

   fp = elm_flipselector_add(win);
   evas_object_size_hint_weight_set(fp, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
   evas_object_smart_callback_add(fp, "underflowed", _overflow_cb, NULL);
   evas_object_smart_callback_add(fp, "overflowed", _underflow_cb, NULL);
   for (i = 0; i < sizeof(lbl) / sizeof(lbl[0]); i++)
     elm_flipselector_item_append(fp, lbl[i], NULL, NULL);
   elm_box_pack_end(bx, fp);
   evas_object_show(fp);

 Those two callbacks will take place whenever one of those smart events occur, and they will just print something to stdout:

void /* underflow callback */
_underflow_cb(void        *data EINA_UNUSED,
              Evas_Object *obj EINA_UNUSED,
              void        *event_info EINA_UNUSED)
{
   printf("Underflow!);
}
void /* overflow callback */
_overflow_cb(void        *data EINA_UNUSED,
             Evas_Object *obj EINA_UNUSED,
             void        *event_info EINA_UNUSED)
{
   printf("Overflow!);
}

Flip the sheets on the widget while looking at the items list, in the source code, and you'll get the idea of those events.

The two buttons below the flip selector will take the actions described in their labels:

   bt = elm_button_add(win);
   elm_object_text_set(bt, "Unselect item");
   evas_object_smart_callback_add(bt, "clicked", _unsel_cb, fp);
   elm_box_pack_end(bx, bt);
   evas_object_show(bt);
   bt = elm_button_add(win);
   elm_object_text_set(bt, "Delete item");
   evas_object_smart_callback_add(bt, "clicked", _del_cb, fp);
   elm_box_pack_end(bx, bt);
   evas_object_show(bt);
   elm_object_event_callback_add(win, _on_keydown, fp);

void /* unselect the item shown in the flip selector */
_unsel_cb(void        *data,
          Evas_Object *obj EINA_UNUSED,
          void        *event_info EINA_UNUSED)
{
   Elm_Object_Item *it;
   Evas_Object *fp = data;
   it = elm_flipselector_selected_item_get(fp);
   elm_flipselector_item_selected_set(it, EINA_FALSE);
}
void /* delete the item shown in the flip selector */
_del_cb(void        *data,
        Evas_Object *obj EINA_UNUSED,
        void        *event_info EINA_UNUSED)
{
   Elm_Object_Item *it;
   Evas_Object *fp = data;
   it = elm_flipselector_selected_item_get(fp);
   if (it) elm_object_item_del(it);
}

 Click on them to exercise those flip selector API calls. To interact with the other parts of this API, there's a command line interface, whose help string can be asked for with the 'h' key:

static const char *commands =                               "commands are:
                              "	n - flip to next item
                              "	p - flip to previous item
                              "	f - print first item's label
                              "	l - print last item's label
                              "	s - print selected item's label
                              "	h - print help;

 The 'n' and 'p' keys will exemplify elm_flipselector_flip_next() and elm_flipselector_flip_prev(), respectively. 'f' and 'l' account for elm_flipselector_first_item_get() and elm_flipselector_last_item_get(), respectively. Finally, 's' will issue elm_flipselector_selected_item_get() on our example flip selector widget.

See the full example, whose window should look like this picture:

See the full source code for this example.