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->step = 1;
|
||||||
ext->range_max = 99999;
|
ext->range_max = 99999;
|
||||||
ext->range_min = -99999;
|
ext->range_min = -99999;
|
||||||
|
ext->rollover = false;
|
||||||
|
|
||||||
|
|
||||||
/*The signal and design functions are not copied so set them here*/
|
/*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_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_range(spinbox, copy_ext->range_min, copy_ext->range_max);
|
||||||
lv_spinbox_set_step(spinbox, copy_ext->step);
|
lv_spinbox_set_step(spinbox, copy_ext->step);
|
||||||
|
lv_spinbox_set_rollover(spinbox, copy_ext->rollover);
|
||||||
|
|
||||||
/*Refresh the style with new signal function*/
|
/*Refresh the style with new signal function*/
|
||||||
lv_obj_refresh_style(spinbox, LV_STYLE_PROP_ALL);
|
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
|
* 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
|
* Set spinbox value
|
||||||
* @param spinbox pointer to spinbox
|
* @param spinbox pointer to spinbox
|
||||||
@ -223,6 +237,18 @@ void lv_spinbox_set_padding_left(lv_obj_t * spinbox, uint8_t padding)
|
|||||||
* Getter functions
|
* 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)
|
* Get the spinbox numeral value (user has to convert to float according to its digit format)
|
||||||
* @param spinbox pointer to spinbox
|
* @param spinbox pointer to spinbox
|
||||||
@ -292,8 +318,11 @@ void lv_spinbox_increment(lv_obj_t * spinbox)
|
|||||||
if((ext->value + ext->step) > 0 && ext->value < 0) ext->value = -ext->value;
|
if((ext->value + ext->step) > 0 && ext->value < 0) ext->value = -ext->value;
|
||||||
ext->value += ext->step;
|
ext->value += ext->step;
|
||||||
|
|
||||||
}
|
} else {
|
||||||
else {
|
// Rollover?
|
||||||
|
if ((ext->rollover) && (ext->value == ext->range_max))
|
||||||
|
ext->value = ext->range_min;
|
||||||
|
else
|
||||||
ext->value = ext->range_max;
|
ext->value = ext->range_max;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -314,8 +343,11 @@ void lv_spinbox_decrement(lv_obj_t * spinbox)
|
|||||||
/*Special mode when zero crossing*/
|
/*Special mode when zero crossing*/
|
||||||
if((ext->value - ext->step) < 0 && ext->value > 0) ext->value = -ext->value;
|
if((ext->value - ext->step) < 0 && ext->value > 0) ext->value = -ext->value;
|
||||||
ext->value -= ext->step;
|
ext->value -= ext->step;
|
||||||
}
|
} else {
|
||||||
else {
|
// Rollover?
|
||||||
|
if ((ext->rollover) && (ext->value == ext->range_min))
|
||||||
|
ext->value = ext->range_max;
|
||||||
|
else
|
||||||
ext->value = ext->range_min;
|
ext->value = ext->range_min;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -42,6 +42,7 @@ typedef struct {
|
|||||||
int32_t range_max;
|
int32_t range_max;
|
||||||
int32_t range_min;
|
int32_t range_min;
|
||||||
int32_t step;
|
int32_t step;
|
||||||
|
uint8_t rollover : 1; // Set to true for rollover functionality
|
||||||
uint16_t digit_count : 4;
|
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 dec_point_pos : 4; /*if 0, there is no separator and the number is an integer*/
|
||||||
uint16_t digit_padding_left : 4;
|
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
|
* 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
|
* Set spinbox value
|
||||||
* @param spinbox pointer to spinbox
|
* @param spinbox pointer to spinbox
|
||||||
@ -114,6 +122,12 @@ void lv_spinbox_set_padding_left(lv_obj_t * spinbox, uint8_t padding);
|
|||||||
* Getter functions
|
* 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)
|
* Get the spinbox numeral value (user has to convert to float according to its digit format)
|
||||||
* @param spinbox pointer to spinbox
|
* @param spinbox pointer to spinbox
|
||||||
|
Loading…
x
Reference in New Issue
Block a user