Slider widget callbacks
This code snippet demonstrates how different slider callbacks work ("changed", "delay,changed", "slider,drag,start", "slider,drag,stop").
//simple helper function for creating labels in a box
Evas_Object *create_empty_label(Evas_Object*parent, Evas_Object* box) {
Evas_Object* label = elm_label_add(parent);
elm_object_text_set(label, "N/A");
evas_object_size_hint_align_set(label, 0.5, EVAS_HINT_FILL);
elm_box_pack_end(box, label);
evas_object_show(label);
return label;
}
//callback for "changed" and "delay,changed" event
static void slider_changed_cb(void *data, Evas_Object *obj, void *event_info) {
double val = elm_slider_value_get(obj);
char buf[20];
snprintf(buf, sizeof(buf), "Value: %3.2f", val);
elm_object_text_set(data, buf);
}
//callback for "slider,drag,start" event
static void slider_drag_start_cb(void *data, Evas_Object *obj, void *event_info) {
elm_object_text_set(data, "Drag: active");
}
//callback for "slider,drag,stop" event
static void slider_drag_stop_cb(void *data, Evas_Object *obj, void *event_info) {
elm_object_text_set(data, "Drag: inactive");
}
static void slider_test(appdata_s *ad) {
//a box for our objects
Evas_Object *box = elm_box_add(ad->win);
evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_win_resize_object_add(ad->win, box);
evas_object_show(box);
//create a slider
Evas_Object *slider = elm_slider_add(ad->win);
elm_slider_min_max_set(slider, 0, 100);
evas_object_size_hint_align_set(slider, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_box_pack_end(box, slider);
evas_object_show(slider);
//create labels
Evas_Object* status_label = create_empty_label(ad->win, box);
Evas_Object* value_label = create_empty_label(ad->win, box);
Evas_Object* delayed_value_label = create_empty_label(ad->win, box);
//register for different callbacks
evas_object_smart_callback_add(slider, "changed", slider_changed_cb, value_label);
evas_object_smart_callback_add(slider, "delay,changed", slider_changed_cb, delayed_value_label);
evas_object_smart_callback_add(slider, "slider,drag,start", slider_drag_start_cb, status_label);
evas_object_smart_callback_add(slider, "slider,drag,stop", slider_drag_stop_cb, status_label);
}