Files
esphome-lsm6ds/esphome/components/lvgl/widgets/spinner.py
T
2341d510d3 [lvgl] Migrate to library v9.5.0 (#12312)
Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
Co-authored-by: Jonathan Swoboda <154711427+swoboda1337@users.noreply.github.com>
2026-03-19 20:31:33 +13:00

43 lines
1.1 KiB
Python

import esphome.config_validation as cv
from ..defines import CONF_ARC_LENGTH, CONF_INDICATOR, CONF_MAIN, CONF_SPIN_TIME
from ..lv_validation import lv_angle_degrees, lv_milliseconds
from ..lvcode import lv
from ..types import LvType
from . import Widget, WidgetType
from .arc import CONF_ARC
CONF_SPINNER = "spinner"
SPINNER_SCHEMA = cv.Schema(
{
cv.Optional(CONF_ARC_LENGTH, default=200): cv.All(
lv_angle_degrees, cv.int_range(min=0, max=360)
),
cv.Optional(CONF_SPIN_TIME, default="2s"): lv_milliseconds,
}
)
class SpinnerType(WidgetType):
def __init__(self):
super().__init__(
CONF_SPINNER,
LvType("lv_spinner_t"),
(CONF_MAIN, CONF_INDICATOR),
SPINNER_SCHEMA,
)
async def to_code(self, w: Widget, config):
spin_time = await lv_milliseconds.process(config.get(CONF_SPIN_TIME))
arc_length = int(config[CONF_ARC_LENGTH])
if arc_length < 180:
arc_length += 180
lv.spinner_set_anim_params(w.obj, spin_time, arc_length)
def get_uses(self):
return (CONF_ARC,)
spinner_spec = SpinnerType()