Actionslider usage

For this example we are going to assume knowledge of evas smart callbacks and some basic evas object functions. Elementary is not meant to be used without evas, if you're not yet familiar with evas it probably is worth checking that out.

And now to the example, when using Elementary we start by including Elementary.h:

#include <Elementary.h>

Next we define some callbacks, they all share the same signature because they are all to be used with evas_object_smart_callback_add(). The first one just prints the selected label(in two different ways):

static void _pos_selected_cb(void *data, Evas_Object *obj, void *event_info)
{
printf("Selection: %s\n", (char *)event_info);
printf("Label selected: %s\n", elm_actionslider_selected_label_get(obj));
}

This next callback is a little more interesting, it makes the selected label magnetic(except if it's the center label):

static void
_position_change_magnetic_cb(void *data, Evas_Object * obj, void *event_info)
{
if (!strcmp((char *)event_info, "left"))
else if (!strcmp((char *)event_info, "right"))
}

This callback enables or disables the magnetic property of the center label:

static void
_magnet_enable_disable_cb(void *data, Evas_Object *obj, void *event_info)
{
if (!strcmp((char *)event_info, "left"))
else if (!strcmp((char *)event_info, "right"))
elm_actionslider_magnet_pos_set(obj, ELM_ACTIONSLIDER_NONE);
}

And finally a callback to stop the main loop when the window is closed:

EAPI_MAIN int
elm_main(int argc, char **argv)
{
Evas_Object *win, *bx, *as;
elm_policy_set(ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_CLOSED);
win = elm_win_util_standard_add("actionslider", "Actionslider");
elm_win_autodel_set(win, EINA_TRUE);
bx = elm_box_add(win);
evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, 0);
evas_object_show(bx);
evas_object_size_hint_weight_set(as, EVAS_HINT_EXPAND, 0);
evas_object_size_hint_align_set(as, EVAS_HINT_FILL, 0);
elm_object_part_text_set(as, "left", "Snooze");
elm_object_part_text_set(as, "right", "Stop");
evas_object_smart_callback_add(as, "pos_changed",
_position_change_magnetic_cb, NULL);
evas_object_smart_callback_add(as, "selected", _pos_selected_cb, NULL);
evas_object_show(as);
evas_object_size_hint_weight_set(as, EVAS_HINT_EXPAND, 0);
evas_object_size_hint_align_set(as, EVAS_HINT_FILL, 0);
elm_object_part_text_set(as, "left", "Snooze");
elm_object_part_text_set(as, "right", "Stop");
evas_object_smart_callback_add(as, "selected", _pos_selected_cb, NULL);
evas_object_show(as);
evas_object_size_hint_weight_set(as, EVAS_HINT_EXPAND, 0);
evas_object_size_hint_align_set(as, EVAS_HINT_FILL, 0);
elm_object_part_text_set(as, "center", "Accept");
elm_object_part_text_set(as, "right", "Reject");
evas_object_smart_callback_add(as, "selected", _pos_selected_cb, NULL);
evas_object_show(as);
evas_object_size_hint_weight_set(as, EVAS_HINT_EXPAND, 0);
evas_object_size_hint_align_set(as, EVAS_HINT_FILL, 0);
elm_object_part_text_set(as, "center", "Accept");
elm_object_part_text_set(as, "right", "Reject");
elm_object_text_set(as, "Go");
evas_object_smart_callback_add(as, "pos_changed",
_position_change_magnetic_cb, NULL);
evas_object_smart_callback_add(as, "selected", _pos_selected_cb, NULL);
evas_object_show(as);
evas_object_size_hint_weight_set(as, EVAS_HINT_EXPAND, 0);
evas_object_size_hint_align_set(as, EVAS_HINT_FILL, 0);
elm_object_part_text_set(as, "left", "Left");
elm_object_part_text_set(as, "center", "Center");
elm_object_part_text_set(as, "right", "Right");
elm_object_text_set(as, "Go");
evas_object_smart_callback_add(as, "selected", _pos_selected_cb, NULL);
evas_object_show(as);
evas_object_size_hint_weight_set(as, EVAS_HINT_EXPAND, 0);
evas_object_size_hint_align_set(as, EVAS_HINT_FILL, 0);
elm_object_part_text_set(as, "left", "Enable");
elm_object_part_text_set(as, "center", "Magnet");
elm_object_part_text_set(as, "right", "Disable");
evas_object_smart_callback_add(as, "pos_changed",
_magnet_enable_disable_cb, NULL);
evas_object_smart_callback_add(as, "selected", _pos_selected_cb, NULL);
evas_object_show(as);
evas_object_resize(win, 320, 400);
evas_object_show(win);
return 0;
}

To be able to create our actionsliders we need to do some setup, but this isn't really relevant here, so if you want to know about that go here.

With all that boring stuff out of the way we can proceed to creating some actionsliders.
All actionsliders are created the same way:

Next we must choose where the indicator starts, and for this one we choose the right, and set the right as magnetic:

We then set the labels for the left and right, passing NULL as an argument to any of the labels makes that position have no label.

Furthermore we mark both left and right as enabled positions, if we didn't do this all three positions would be enabled:

Having the enabled positions we now add a smart callback to change which position is magnetic, so that only the last selected position is magnetic:

And finally we set our printing callback and show the actionslider:

For our next actionslider we are going to do much as we did for the previous except we are going to have the center as the magnet(and not change it):

And another actionslider, in this one the indicator starts on the left. It has labels only in the center and right, and both positions are magnetic. Because the left doesn't have a label and is not magnetic once the indicator leaves it can't return:

Note
The greyed out area is a style.

And now an actionslider with a label in the indicator, and whose magnet properties change based on what was last selected:

Note
The greyed out area is a style.

We are almost done, this next one is just an actionslider with all positions magnetized and having every possible label:

And for our last actionslider we have one that turns the magnetic property on and off:

The example will look like this:

actionslider_01.png

See the full source code here