mirror of
https://github.com/lvgl/lvgl.git
synced 2025-01-28 07:03:00 +08:00
Merge branch 'skypoldo-spinbox-rollover' into dev-7.0
This commit is contained in:
commit
c0d689b698
@ -78,6 +78,7 @@ lv_obj_t * lv_spinbox_create(lv_obj_t * par, const lv_obj_t * copy)
|
||||
ext->step = 1;
|
||||
ext->range_max = 99999;
|
||||
ext->range_min = -99999;
|
||||
ext->rollover = false;
|
||||
|
||||
|
||||
/*The signal and design functions are not copied so set them here*/
|
||||
@ -102,7 +103,7 @@ lv_obj_t * lv_spinbox_create(lv_obj_t * par, const lv_obj_t * copy)
|
||||
lv_spinbox_set_digit_format(spinbox, (uint8_t)copy_ext->digit_count, (uint8_t)copy_ext->dec_point_pos);
|
||||
lv_spinbox_set_range(spinbox, copy_ext->range_min, copy_ext->range_max);
|
||||
lv_spinbox_set_step(spinbox, copy_ext->step);
|
||||
|
||||
lv_spinbox_set_rollover(spinbox, copy_ext->rollover);
|
||||
|
||||
/*Refresh the style with new signal function*/
|
||||
lv_obj_refresh_style(spinbox, LV_STYLE_PROP_ALL);
|
||||
@ -119,6 +120,19 @@ lv_obj_t * lv_spinbox_create(lv_obj_t * par, const lv_obj_t * copy)
|
||||
* Setter functions
|
||||
*====================*/
|
||||
|
||||
/**
|
||||
* Set spinbox rollover function
|
||||
* @param spinbox pointer to spinbox
|
||||
* @param b true or false to enable or disable (default)
|
||||
*/
|
||||
void lv_spinbox_set_rollover(lv_obj_t * spinbox, bool b) {
|
||||
LV_ASSERT_OBJ(spinbox, LV_OBJX_NAME);
|
||||
|
||||
lv_spinbox_ext_t * ext = lv_obj_get_ext_attr(spinbox);
|
||||
|
||||
ext->rollover = b;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set spinbox value
|
||||
* @param spinbox pointer to spinbox
|
||||
@ -223,6 +237,18 @@ void lv_spinbox_set_padding_left(lv_obj_t * spinbox, uint8_t padding)
|
||||
* Getter functions
|
||||
*====================*/
|
||||
|
||||
/**
|
||||
* Get spinbox rollover function status
|
||||
* @param spinbox pointer to spinbox
|
||||
*/
|
||||
bool lv_spinbox_get_rollover(lv_obj_t * spinbox) {
|
||||
LV_ASSERT_OBJ(spinbox, LV_OBJX_NAME);
|
||||
|
||||
lv_spinbox_ext_t * ext = lv_obj_get_ext_attr(spinbox);
|
||||
|
||||
return ext->rollover;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the spinbox numeral value (user has to convert to float according to its digit format)
|
||||
* @param spinbox pointer to spinbox
|
||||
@ -292,9 +318,12 @@ void lv_spinbox_increment(lv_obj_t * spinbox)
|
||||
if((ext->value + ext->step) > 0 && ext->value < 0) ext->value = -ext->value;
|
||||
ext->value += ext->step;
|
||||
|
||||
}
|
||||
else {
|
||||
ext->value = ext->range_max;
|
||||
} else {
|
||||
// Rollover?
|
||||
if ((ext->rollover) && (ext->value == ext->range_max))
|
||||
ext->value = ext->range_min;
|
||||
else
|
||||
ext->value = ext->range_max;
|
||||
}
|
||||
|
||||
lv_spinbox_updatevalue(spinbox);
|
||||
@ -314,9 +343,12 @@ void lv_spinbox_decrement(lv_obj_t * spinbox)
|
||||
/*Special mode when zero crossing*/
|
||||
if((ext->value - ext->step) < 0 && ext->value > 0) ext->value = -ext->value;
|
||||
ext->value -= ext->step;
|
||||
}
|
||||
else {
|
||||
ext->value = ext->range_min;
|
||||
} else {
|
||||
// Rollover?
|
||||
if ((ext->rollover) && (ext->value == ext->range_min))
|
||||
ext->value = ext->range_max;
|
||||
else
|
||||
ext->value = ext->range_min;
|
||||
}
|
||||
|
||||
lv_spinbox_updatevalue(spinbox);
|
||||
|
@ -42,6 +42,7 @@ typedef struct {
|
||||
int32_t range_max;
|
||||
int32_t range_min;
|
||||
int32_t step;
|
||||
uint8_t rollover : 1; // Set to true for rollover functionality
|
||||
uint16_t digit_count : 4;
|
||||
uint16_t dec_point_pos : 4; /*if 0, there is no separator and the number is an integer*/
|
||||
uint16_t digit_padding_left : 4;
|
||||
@ -72,6 +73,13 @@ lv_obj_t * lv_spinbox_create(lv_obj_t * par, const lv_obj_t * copy);
|
||||
* Setter functions
|
||||
*====================*/
|
||||
|
||||
/**
|
||||
* Set spinbox rollover function
|
||||
* @param spinbox pointer to spinbox
|
||||
* @param b true or false to enable or disable (default)
|
||||
*/
|
||||
void lv_spinbox_set_rollover(lv_obj_t * spinbox, bool b);
|
||||
|
||||
/**
|
||||
* Set spinbox value
|
||||
* @param spinbox pointer to spinbox
|
||||
@ -114,6 +122,12 @@ void lv_spinbox_set_padding_left(lv_obj_t * spinbox, uint8_t padding);
|
||||
* Getter functions
|
||||
*====================*/
|
||||
|
||||
/**
|
||||
* Get spinbox rollover function status
|
||||
* @param spinbox pointer to spinbox
|
||||
*/
|
||||
bool lv_spinbox_get_rollover(lv_obj_t * spinbox);
|
||||
|
||||
/**
|
||||
* Get the spinbox numeral value (user has to convert to float according to its digit format)
|
||||
* @param spinbox pointer to spinbox
|
||||
|
Loading…
x
Reference in New Issue
Block a user