checkbox rolo selection
This commit is contained in:
parent
4240db93d5
commit
b487cd1e2e
@ -638,7 +638,7 @@
|
||||
|
||||
#define LV_USE_MENU 0
|
||||
|
||||
#define LV_USE_MSGBOX 1
|
||||
#define LV_USE_MSGBOX 0
|
||||
|
||||
#define LV_USE_ROLLER 0 /*Requires: lv_label*/
|
||||
|
||||
|
||||
@ -306,45 +306,22 @@ void moveRolloDown(lv_event_t *e) {
|
||||
if (ui_getCurrentScreen() != objects.rolloScr)
|
||||
return;
|
||||
;
|
||||
uint16_t sel = lv_dropdown_get_selected(objects.deviceDropdown);
|
||||
if (sel == tahoma.numDevs) {
|
||||
// all selected
|
||||
for (uint8_t i = 0; i < tahoma.numDevs; i++) {
|
||||
tahoma.sendMove(i, 100, 100);
|
||||
}
|
||||
} else {
|
||||
tahoma.sendMove(sel, 100, 100);
|
||||
}
|
||||
tahoma.moveSelected(100, 100);
|
||||
}
|
||||
|
||||
void moveRolloMan(lv_event_t *e) {
|
||||
if (ui_getCurrentScreen() != objects.rolloPosScr)
|
||||
return;
|
||||
;
|
||||
uint8_t sel = tahoma.getCurrentDev();
|
||||
if (sel == tahoma.numDevs) {
|
||||
// all selected
|
||||
for (uint8_t i = 0; i < tahoma.numDevs; i++) {
|
||||
tahoma.sendMove(i, lv_slider_get_value(objects.rolloPos), lv_arc_get_value(objects.rolloRot)/9);
|
||||
}
|
||||
} else {
|
||||
tahoma.sendMove(sel, lv_slider_get_value(objects.rolloPos), lv_arc_get_value(objects.rolloRot)/9);
|
||||
}
|
||||
tahoma.moveSelected(lv_slider_get_value(objects.rolloPos),
|
||||
lv_arc_get_value(objects.rolloRot) / 9);
|
||||
}
|
||||
|
||||
void moveRolloUp(lv_event_t *e) {
|
||||
if (ui_getCurrentScreen() != objects.rolloScr)
|
||||
return;
|
||||
;
|
||||
uint16_t sel = lv_dropdown_get_selected(objects.deviceDropdown);
|
||||
if (sel == tahoma.numDevs) {
|
||||
// all selected
|
||||
for (uint8_t i = 0; i < tahoma.numDevs; i++) {
|
||||
tahoma.sendMove(i, 0, 0);
|
||||
}
|
||||
} else {
|
||||
tahoma.sendMove(sel, 0, 0);
|
||||
}
|
||||
tahoma.moveSelected(0, 0);
|
||||
}
|
||||
|
||||
void zoomAniWrapper(void *var, int32_t val) {
|
||||
@ -471,6 +448,16 @@ void showMenuScreen(lv_event_t *e) {
|
||||
objects.rolloPosScr = NULL;
|
||||
loadScreen(objects.menuScr);
|
||||
}
|
||||
|
||||
void toggleRolloChooser(lv_event_t *e) {
|
||||
if (lv_obj_has_flag(objects.deviceDropdown, LV_OBJ_FLAG_HIDDEN)) {
|
||||
lv_obj_remove_flag(objects.deviceDropdown, LV_OBJ_FLAG_HIDDEN);
|
||||
} else {
|
||||
lv_obj_add_flag(objects.deviceDropdown, LV_OBJ_FLAG_HIDDEN);
|
||||
setRolloListText();
|
||||
}
|
||||
}
|
||||
|
||||
void showRolloScreen(lv_event_t *e) {
|
||||
if (ui_getCurrentScreen() != objects.rolloScr) {
|
||||
create_screen_rollos();
|
||||
@ -478,11 +465,17 @@ void showRolloScreen(lv_event_t *e) {
|
||||
update_wifi_strength(glblData.wifiStrength, glblData.wifiMode);
|
||||
}
|
||||
for (uint8_t i = 0; i < tahoma.getMyDevices(); i++) {
|
||||
lv_dropdown_add_option(objects.deviceDropdown,
|
||||
tahoma.devicelist[i].name.c_str(),
|
||||
LV_DROPDOWN_POS_LAST);
|
||||
rolloCheckbox_add(tahoma.devicelist[i].name.c_str(),
|
||||
(void *)&(tahoma.devicelist[i]),
|
||||
tahoma.isDeviceSelected(i));
|
||||
// lv_dropdown_add_option(objects.deviceDropdown,
|
||||
// tahoma.devicelist[i].name.c_str(),
|
||||
// LV_DROPDOWN_POS_LAST);
|
||||
};
|
||||
lv_dropdown_add_option(objects.deviceDropdown, "Alle", LV_DROPDOWN_POS_LAST);
|
||||
rolloCheckbox_finish();
|
||||
setRolloListText();
|
||||
// lv_dropdown_add_option(objects.deviceDropdown, "Alle",
|
||||
// LV_DROPDOWN_POS_LAST);
|
||||
objects.debugScr = NULL;
|
||||
objects.mainScr = NULL;
|
||||
objects.chartScr = NULL;
|
||||
@ -496,9 +489,8 @@ void showRolloPosScreen(lv_event_t *e) {
|
||||
create_screen_rolloPos();
|
||||
update_status();
|
||||
update_wifi_strength(glblData.wifiStrength, glblData.wifiMode);
|
||||
lv_label_set_text_fmt(
|
||||
objects.debugTxt, "\"%s\"\nmanuell positionieren",
|
||||
tahoma.devicelist[tahoma.getCurrentDev()].name.c_str());
|
||||
// lv_label_set_text_fmt(
|
||||
// objects.debugTxt, "Gewählte Rollos manuell positionieren");
|
||||
Tahoma::rolloCommand_t pos = tahoma.getPos();
|
||||
lv_slider_set_value(objects.rolloPos, pos.position, LV_ANIM_OFF);
|
||||
lv_arc_set_value(objects.rolloRot, pos.rotation * 9);
|
||||
@ -531,8 +523,6 @@ void showDebugScreen(lv_event_t *e) {
|
||||
loadScreen(objects.debugScr);
|
||||
}
|
||||
|
||||
|
||||
|
||||
void rebootESP(lv_event_t *e) { ESP.restart(); }
|
||||
|
||||
void showMainScreen(lv_event_t *e) {
|
||||
@ -571,8 +561,30 @@ void rotation_changed_cb(lv_event_t *e) {
|
||||
}
|
||||
}
|
||||
|
||||
void setRolloListText(void) {
|
||||
String txt = "";
|
||||
for (uint8_t i = 0; i < tahoma.numDevs; i++) {
|
||||
if (tahoma.devicelist[i].selected) {
|
||||
txt += tahoma.devicelist[i].name + ", ";
|
||||
}
|
||||
}
|
||||
if (txt.length()) {
|
||||
txt = txt.substring(0, txt.length() - 2);
|
||||
} else {
|
||||
txt = "Rollos wählen";
|
||||
}
|
||||
lv_obj_set_style_anim_duration(objects.selDevicesLbl, 70*(lv_text_get_width(txt.c_str(),txt.length(),&symbol_font_12,0)-100), LV_PART_MAIN);
|
||||
lv_label_set_text(objects.selDevicesLbl, txt.c_str());
|
||||
}
|
||||
|
||||
void rolloChanged(lv_event_t *e) {
|
||||
tahoma.setCurrentDev(lv_dropdown_get_selected(lv_event_get_target_obj(e)));
|
||||
lv_obj_t *act_cb = (lv_obj_t *)lv_event_get_target(e);
|
||||
if (act_cb == objects.deviceDropdown)
|
||||
return;
|
||||
Tahoma::device_t *active_id =
|
||||
(Tahoma::device_t *)lv_obj_get_user_data(act_cb);
|
||||
active_id->selected = lv_obj_has_state(act_cb, LV_STATE_CHECKED);
|
||||
// tahoma.setCurrentDev(lv_dropdown_get_selected(lv_event_get_target_obj(e)));
|
||||
}
|
||||
|
||||
void pos_changed_cb(lv_event_t *e) {
|
||||
|
||||
@ -32,6 +32,8 @@ void draw_event_cb(lv_event_t* e);
|
||||
void moveRolloDown(lv_event_t* e);
|
||||
void moveRolloUp(lv_event_t* e);
|
||||
void moveRolloMan(lv_event_t *e);
|
||||
void setRolloListText(void);
|
||||
void toggleRolloChooser(lv_event_t *e);
|
||||
void checkTahomaActions(void);
|
||||
void rotation_changed_cb(lv_event_t* e);
|
||||
void pos_changed_cb(lv_event_t *e);
|
||||
|
||||
@ -214,6 +214,38 @@ void create_screen_menu() {
|
||||
addStatusIcons(parent_obj);
|
||||
}
|
||||
|
||||
void rolloCheckbox_add(const char *txt, void *_tahomaDevice, bool _checked) {
|
||||
lv_obj_t *obj = lv_checkbox_create(objects.deviceDropdown);
|
||||
lv_checkbox_set_text(obj, txt);
|
||||
lv_obj_set_user_data(obj, _tahomaDevice);
|
||||
lv_obj_set_style_bg_image_src(obj, SYM_CHECK,
|
||||
LV_PART_INDICATOR | LV_STATE_CHECKED);
|
||||
lv_obj_set_style_border_color(obj, lv_color_hex(0xff5D636E),
|
||||
LV_PART_INDICATOR | LV_STATE_DEFAULT);
|
||||
lv_obj_set_style_bg_color(obj, lv_palette_darken(LV_PALETTE_GREEN, 3),
|
||||
LV_PART_INDICATOR | LV_STATE_CHECKED);
|
||||
lv_obj_set_style_text_font(obj,&symbol_font_12,LV_STATE_DEFAULT);
|
||||
if (_checked)
|
||||
lv_obj_add_state(obj, LV_STATE_CHECKED);
|
||||
lv_obj_add_flag(obj, LV_OBJ_FLAG_EVENT_BUBBLE);
|
||||
}
|
||||
|
||||
void rolloCheckbox_finish(void) {
|
||||
lv_obj_t *obj = lv_btn_create(objects.deviceDropdown);
|
||||
lv_obj_set_size(obj, 120, 25);
|
||||
lv_obj_set_style_bg_color(obj, lv_color_hex(0xff2f3237),
|
||||
LV_PART_MAIN | LV_STATE_DEFAULT);
|
||||
lv_obj_add_event_cb(obj, toggleRolloChooser, LV_EVENT_RELEASED, NULL);
|
||||
lv_obj_t *parent_obj = obj;
|
||||
obj = lv_label_create(parent_obj);
|
||||
lv_obj_align(obj, LV_ALIGN_CENTER, 0, 4);
|
||||
lv_obj_set_size(obj, LV_SIZE_CONTENT, LV_SIZE_CONTENT);
|
||||
lv_label_set_text(obj, SYM_CHECK);
|
||||
lv_obj_set_style_text_font(obj, &symbol_font_16,
|
||||
LV_PART_MAIN | LV_STATE_DEFAULT);
|
||||
lv_obj_set_style_align(obj, LV_ALIGN_CENTER, LV_PART_MAIN | LV_STATE_DEFAULT);
|
||||
}
|
||||
|
||||
void create_screen_rollos() {
|
||||
lv_obj_t *obj = lv_obj_create(0);
|
||||
objects.rolloScr = obj;
|
||||
@ -221,7 +253,7 @@ void create_screen_rollos() {
|
||||
lv_obj_set_size(obj, 240, 240);
|
||||
{
|
||||
lv_obj_t *parent_obj = obj;
|
||||
{
|
||||
/*{
|
||||
lv_obj_t *obj = lv_dropdown_create(parent_obj);
|
||||
objects.deviceDropdown = obj;
|
||||
lv_dropdown_set_symbol(obj, SYM_ARROW_DOWN);
|
||||
@ -233,8 +265,34 @@ void create_screen_rollos() {
|
||||
LV_PART_MAIN | LV_STATE_DEFAULT);
|
||||
lv_obj_set_style_text_font(lv_dropdown_get_list(obj), &symbol_font_12,
|
||||
LV_PART_MAIN | LV_STATE_DEFAULT);
|
||||
}*/
|
||||
{ // rolloChooser BTN
|
||||
lv_obj_t *obj = lv_btn_create(parent_obj);
|
||||
lv_obj_set_size(obj, 130, 30);
|
||||
lv_obj_set_pos(obj, 55, 20);
|
||||
lv_obj_set_style_bg_color(obj, lv_color_hex(0xff2f3237),
|
||||
LV_PART_MAIN | LV_STATE_DEFAULT);
|
||||
lv_obj_add_event_cb(obj, toggleRolloChooser, LV_EVENT_RELEASED, NULL);
|
||||
lv_obj_t *parent_obj = obj;
|
||||
static lv_anim_t animation_template;
|
||||
lv_anim_init(&animation_template);
|
||||
lv_anim_set_repeat_count(&animation_template,LV_ANIM_REPEAT_INFINITE);
|
||||
lv_anim_set_delay(&animation_template,
|
||||
500); /*Wait 1 second to start the first scroll*/
|
||||
lv_anim_set_repeat_delay(&animation_template,
|
||||
1000); /*Repeat the scroll 3 seconds after the
|
||||
label scrolls back to the initial position*/
|
||||
obj = lv_label_create(parent_obj);
|
||||
lv_obj_set_style_anim(obj, &animation_template, LV_STATE_DEFAULT);
|
||||
objects.selDevicesLbl = obj;
|
||||
lv_label_set_long_mode(obj, LV_LABEL_LONG_SCROLL_CIRCULAR);
|
||||
lv_obj_set_width(obj, 110);
|
||||
lv_label_set_text(obj, "Rollos wählen");
|
||||
lv_obj_set_style_text_font(obj, &symbol_font_16,
|
||||
LV_PART_MAIN | LV_STATE_DEFAULT);
|
||||
lv_obj_set_style_align(obj, LV_ALIGN_CENTER,
|
||||
LV_PART_MAIN | LV_STATE_DEFAULT);
|
||||
}
|
||||
|
||||
{ // UP BTN
|
||||
lv_obj_t *obj = lv_btn_create(parent_obj);
|
||||
lv_obj_set_size(obj, 120, 60);
|
||||
@ -310,6 +368,16 @@ void create_screen_rollos() {
|
||||
LV_PART_MAIN | LV_STATE_DEFAULT);
|
||||
}
|
||||
addStatusIcons(parent_obj);
|
||||
{
|
||||
lv_obj_t *main_cont = lv_obj_create(parent_obj);
|
||||
objects.deviceDropdown = main_cont;
|
||||
lv_obj_set_flex_flow(main_cont, LV_FLEX_FLOW_COLUMN);
|
||||
lv_obj_add_event_cb(main_cont, rolloChanged, LV_EVENT_CLICKED, 0);
|
||||
lv_obj_add_flag(main_cont, LV_OBJ_FLAG_HIDDEN);
|
||||
lv_obj_set_size(main_cont, 150, LV_SIZE_CONTENT);
|
||||
lv_obj_set_style_max_height(main_cont, 200, LV_STATE_DEFAULT);
|
||||
lv_obj_set_pos(main_cont, 45, 30);
|
||||
}
|
||||
}
|
||||
// tick_screen_rollos();
|
||||
}
|
||||
@ -557,7 +625,7 @@ void create_screen_rolloPos() {
|
||||
objects.debugTxt = obj;
|
||||
lv_obj_align(obj, LV_ALIGN_CENTER, 0, -85);
|
||||
lv_obj_set_size(obj, LV_SIZE_CONTENT, LV_SIZE_CONTENT);
|
||||
lv_label_set_text(obj, "\"Fenster Rechts\"\nmanuell Positionieren");
|
||||
lv_label_set_text(obj, "Gewählte Rollos manuell positionieren");
|
||||
lv_obj_set_style_text_align(obj, LV_TEXT_ALIGN_CENTER,
|
||||
LV_PART_MAIN | LV_STATE_DEFAULT);
|
||||
lv_obj_set_style_text_font(obj, &symbol_font_12,
|
||||
|
||||
@ -37,6 +37,7 @@ typedef struct _objects_t {
|
||||
lv_chart_series_t *chart_series;
|
||||
lv_obj_t *rolloPos;
|
||||
lv_obj_t *rolloRot;
|
||||
lv_obj_t *selDevicesLbl;
|
||||
} objects_t;
|
||||
|
||||
extern objects_t objects;
|
||||
@ -61,11 +62,12 @@ void create_screen_main();
|
||||
void create_screen_chart();
|
||||
void create_screen_debug();
|
||||
void create_screen_menu();
|
||||
void rolloCheckbox_add(const char *txt, void *_tahomaDevice, bool _checked);
|
||||
void rolloCheckbox_finish(void);
|
||||
void create_screen_rollos();
|
||||
void create_screen_rolloPos();
|
||||
void create_screens();
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user