#ifndef BlinkerSlider_H #define BlinkerSlider_H #include "../Blinker/BlinkerConfig.h" #include "../Blinker/BlinkerUtility.h" class BlinkerSlider { public : BlinkerSlider(char _name[], blinker_callback_with_int32_arg_t _func = NULL) // : sliderName(_name) { wNum = Blinker.attachWidget(_name, _func); } void attach(blinker_callback_with_int32_arg_t _func) { if (wNum == 0) return; Blinker.freshAttachWidget(Blinker.widgetName_int(wNum), _func); } void color(const String & _clr) { if (_fresh >> 0 & 0x01) free(textClr); textClr = (char*)malloc((_clr.length()+1)*sizeof(char)); strcpy(textClr, _clr.c_str()); _fresh |= 0x01 << 0; } void print(char value) { _print(STRING_format(value)); } void print(unsigned char value) { _print(STRING_format(value)); } void print(int value) { _print(STRING_format(value)); } void print(unsigned int value) { _print(STRING_format(value)); } void print(long value) { _print(STRING_format(value)); } void print(unsigned long value) { _print(STRING_format(value)); } void print(double value) { _print(STRING_format(value)); } void print() { _print(""); } private : uint8_t wNum; char * textClr; uint8_t _fresh = 0; void _print(const String & n) { if ((_fresh == 0 && n.length() == 0) || \ wNum == 0) { return; } String sliderData; if (n.length()) { sliderData += BLINKER_F("{\""); sliderData += BLINKER_F(BLINKER_CMD_VALUE); sliderData += BLINKER_F("\":"); sliderData += n; } if (_fresh >> 0 & 0x01) { if (sliderData.length()) sliderData += BLINKER_F(","); else sliderData += BLINKER_F("{"); sliderData += BLINKER_F("\""); sliderData += BLINKER_F(BLINKER_CMD_COLOR); sliderData += BLINKER_F("\":\""); sliderData += (textClr); sliderData += BLINKER_F("\""); free(textClr); } sliderData += BLINKER_F("}"); _fresh = 0; Blinker.printArray(Blinker.widgetName_int(wNum), sliderData); } }; #endif