2025-02-26 5:17 AM
Hello!
I've been having some problems to update a flex button inside a custom container that i created and used as template in a scroll list.
My goal is: select an item in scroll list by hardware button, and change the state of a flex button from "Released" to "Pressed" and vice-versa.
Issue: the function that i use to update the items only update when the scroll movement is made, create another function to send the button's update command to the container didn't work.
I need to update the button state immediatly with a button click, how can i do this?
My code:
//My container
void RoutingContainer::setListElements(int item) { //Function to define items in scroll list
switch (item) {
case 0:
channel_number.setTypedText(TypedText(T_RESOURCEID1));
break;
case 1:
channel_number.setTypedText(TypedText(T_RESOURCEID2));
break;
case 2:
channel_number.setTypedText(TypedText(T_RESOURCEID3));
break;
case 3:
channel_number.setTypedText(TypedText(T_RESOURCEID4));
break;
case 4:
channel_number.setTypedText(TypedText(T_RESOURCEID5));
break;
case 5:
channel_number.setTypedText(TypedText(T_RESOURCEID6));
break;
case 6:
channel_number.setTypedText(TypedText(T_RESOURCEID7));
break;
case 7:
channel_number.setTypedText(TypedText(T_RESOURCEID8));
break;
}
}
void RoutingContainer::setButtonState(bool pressed) //Function to change the buttons state
{
btn_left.setPressed(pressed);
btn_left.invalidate();
}
//View
//This function only updates when the scroll is made, and it's the only way i can update the widgets (i guess)
void routing_channelView::scrollList1UpdateItem(RoutingContainer& item, int16_t itemIndex)
{
item.setListElements(itemIndex);
if (itemSelected && (itemIndex == listIndex))
{
item.setButtonState(true);
}
else
{
item.setButtonState(false);
}
}
void routing_channelView::selectOption()
{
itemSelected = true;
}