color: 255 255 255 190;
}
}
+ part { name: "elm.text.indicator";
+ type: TEXT;
+ scale: 1;
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ rel1 {
+ to: "elm.drag_button";
+ offset: 5 0;
+ }
+ rel2 {
+ to: "elm.drag_button";
+ offset: -5 0;
+ }
+ color: 0 0 0 255;
+ text {
+ font: "Sans,Edje-Vera";
+ size: 10;
+ align: 0.5 0.5;
+ min: 0 1;
+ }
+ }
+ }
}
programs {
program { name: "elm.drag_button,mouse,up";
color: 255 255 255 190;
}
}
+ part { name: "elm.text.indicator";
+ type: TEXT;
+ scale: 1;
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ rel1 {
+ to: "elm.drag_button";
+ offset: 5 0;
+ }
+ rel2 {
+ to: "elm.drag_button";
+ offset: -5 0;
+ }
+ color: 0 0 0 255;
+ text {
+ font: "Sans,Edje-Vera";
+ size: 10;
+ align: 0.5 0.5;
+ min: 0 1;
+ }
+ }
+ }
}
programs {
program { name: "elm.drag_button,mouse,up";
elm_actionslider_magnet_pos_set(obj, ELM_ACTIONSLIDER_RIGHT);
}
+static void
+_magnet_enable_disable_cb(void *data __UNUSED__, Evas_Object *obj, void *event_info)
+{
+ if (!strcmp((char *)event_info, "left"))
+ elm_actionslider_magnet_pos_set(obj, ELM_ACTIONSLIDER_CENTER);
+ else if (!strcmp((char *)event_info, "right"))
+ elm_actionslider_magnet_pos_set(obj, ELM_ACTIONSLIDER_NONE);
+}
+
void
test_actionslider(void *data __UNUSED__, Evas_Object * obj __UNUSED__, void *event_info __UNUSED__)
{
elm_actionslider_indicator_pos_set(ms, ELM_ACTIONSLIDER_LEFT);
elm_actionslider_magnet_pos_set(ms, ELM_ACTIONSLIDER_LEFT);
elm_actionslider_labels_set(ms, NULL, "Accept", "Reject");
+ elm_actionslider_indicator_label_set(ms, "Go");
evas_object_smart_callback_add(ms, "pos_changed",
_position_change_magnetic_cb, NULL);
evas_object_smart_callback_add(ms, "selected", _pos_selected_cb, NULL);
elm_actionslider_indicator_pos_set(ms, ELM_ACTIONSLIDER_LEFT);
elm_actionslider_magnet_pos_set(ms, ELM_ACTIONSLIDER_ALL);
elm_actionslider_labels_set(ms, "Left", "Center", "Right");
+ elm_actionslider_indicator_label_set(ms, "Go");
+ evas_object_smart_callback_add(ms, "selected", _pos_selected_cb, NULL);
+ evas_object_show(ms);
+ elm_box_pack_end(bx, ms);
+
+ ms = elm_actionslider_add(win);
+ evas_object_size_hint_weight_set(ms, EVAS_HINT_EXPAND, 0);
+ evas_object_size_hint_align_set(ms, EVAS_HINT_FILL, 0);
+ elm_actionslider_indicator_pos_set(ms, ELM_ACTIONSLIDER_CENTER);
+ elm_actionslider_magnet_pos_set(ms, ELM_ACTIONSLIDER_CENTER);
+ elm_actionslider_labels_set(ms, "Enable", "Magnet", "Disable");
+ evas_object_smart_callback_add(ms, "pos_changed",
+ _magnet_enable_disable_cb, NULL);
evas_object_smart_callback_add(ms, "selected", _pos_selected_cb, NULL);
evas_object_show(ms);
elm_box_pack_end(bx, ms);
EAPI Elm_Actionslider_Pos elm_actionslider_magnet_pos_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
EAPI void elm_actionslider_enabled_pos_set(Evas_Object *obj, Elm_Actionslider_Pos pos) EINA_ARG_NONNULL(1);
EAPI Elm_Actionslider_Pos elm_actionslider_enabled_pos_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EAPI void elm_actionslider_indicator_label_set(Evas_Object *obj, const char *label) EINA_ARG_NONNULL(1);
+ EAPI const char *elm_actionslider_indicator_label_get(Evas_Object *obj) EINA_ARG_NONNULL(1);
/* smart callbacks called:
* "selected" - when user selects a position (the label is passed as
* event info)".
Evas_Object *drag_button_base;
Elm_Actionslider_Pos magnet_position, enabled_position;
const char *text_left, *text_right, *text_center;
+ const char *indicator_label;
Ecore_Animator *button_animator;
double final_position;
Eina_Bool mouse_down : 1;
{
Widget_Data *wd = elm_widget_data_get(obj);
if (!wd) return;
+ if (wd->drag_button_base)
+ {
+ evas_object_del(wd->drag_button_base);
+ wd->drag_button_base = NULL;
+ }
if (wd->text_left) eina_stringshare_del(wd->text_left);
if (wd->text_right) eina_stringshare_del(wd->text_right);
if (wd->text_center) eina_stringshare_del(wd->text_center);
+ if (wd->indicator_label) eina_stringshare_del(wd->indicator_label);
free(wd);
}
edje_object_part_text_set(wd->as, "elm.text.left", wd->text_left);
edje_object_part_text_set(wd->as, "elm.text.right", wd->text_right);
edje_object_part_text_set(wd->as, "elm.text.center", wd->text_center);
+ edje_object_part_text_set(wd->as, "elm.text.indicator", wd->indicator_label);
edje_object_message_signal_process(wd->as);
_sizing_eval(obj);
}
return;
}
- if (!wd->magnet_position)
- {
- wd->final_position = 0;
- goto as_anim;
- }
+ if (wd->magnet_position == ELM_ACTIONSLIDER_NONE) return;
if (position < 0.3)
{
return NULL;
}
+
+/**
+ * Set the label used on the indicator object.
+ *
+ * @param obj The actionslider object
+ * @param label The label which is going to be set.
+ *
+ * @ingroup Actionslider
+ */
+EAPI void
+elm_actionslider_indicator_label_set(Evas_Object *obj, const char *label)
+{
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return;
+
+ eina_stringshare_replace(&wd->indicator_label, label);
+ edje_object_part_text_set(wd->as, "elm.text.indicator", wd->indicator_label);
+}
+
+/**
+ * Get the label used on the indicator object.
+ *
+ * @param obj The actionslider object
+ * @return The indicator label
+ *
+ * @ingroup Actionslider
+ */
+EAPI const char *
+elm_actionslider_indicator_label_get(Evas_Object *obj)
+{
+ ELM_CHECK_WIDTYPE(obj, widtype) NULL;
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return;
+ return wd->indicator_label;
+}