diff --git a/lv_objx/lv_sw.c b/lv_objx/lv_sw.c index 25f00f5db..2b09354ae 100644 --- a/lv_objx/lv_sw.c +++ b/lv_objx/lv_sw.c @@ -147,6 +147,22 @@ void lv_sw_off(lv_obj_t * sw) lv_slider_set_style(sw, LV_SLIDER_STYLE_KNOB, ext->style_knob_off); } +/** + * Toggle the position of the switch + * @param sw pointer to a switch object + * @return resulting state of the switch. + */ +bool lv_sw_toggle(lv_obj_t *sw) { + bool state = lv_sw_get_state(sw); + if(state) { + lv_sw_off(sw); + } + else { + lv_sw_on(sw); + } + return !state; +} + /** * Turn ON the switch with an animation * @param sw pointer to a switch object @@ -173,6 +189,22 @@ void lv_sw_off_anim(lv_obj_t * sw) lv_slider_set_style(sw, LV_SLIDER_STYLE_KNOB, ext->style_knob_off); } +/** + * Toggle the position of the switch with an animation + * @param sw pointer to a switch object + * @return resulting state of the switch. + */ +bool lv_sw_toggle_anim(lv_obj_t *sw) { + bool state = lv_sw_get_state(sw); + if(state) { + lv_sw_off_anim(sw); + } + else { + lv_sw_on_anim(sw); + } + return !state; +} + /** * Set a style of a switch * @param sw pointer to a switch object diff --git a/lv_objx/lv_sw.h b/lv_objx/lv_sw.h index 9ab27144f..28b22f739 100644 --- a/lv_objx/lv_sw.h +++ b/lv_objx/lv_sw.h @@ -88,6 +88,13 @@ void lv_sw_on(lv_obj_t *sw); */ void lv_sw_off(lv_obj_t *sw); +/** + * Toggle the position of the switch + * @param sw pointer to a switch object + * @return resulting state of the switch. + */ +bool lv_sw_toggle(lv_obj_t *sw); + /** * Turn ON the switch with an animation * @param sw pointer to a switch object @@ -100,6 +107,13 @@ void lv_sw_on_anim(lv_obj_t * sw); */ void lv_sw_off_anim(lv_obj_t * sw); +/** + * Toggle the position of the switch with an animation + * @param sw pointer to a switch object + * @return resulting state of the switch. + */ +bool lv_sw_toggle_anim(lv_obj_t *sw); + /** * Set a function which will be called when the switch is toggled by the user * @param sw pointer to switch object