1
0
mirror of https://github.com/s00500/ESPUI.git synced 2024-11-22 09:10:54 +00:00

Reworked removeControl function

This commit is contained in:
Martin Mueller 2022-06-10 12:44:53 -04:00
parent 7056cdf044
commit 9cb962122c

View File

@ -628,38 +628,30 @@ uint16_t ESPUIClass::addControl(ControlType type, const char* label, const Strin
bool ESPUIClass::removeControl(uint16_t id, bool force_reload_ui) bool ESPUIClass::removeControl(uint16_t id, bool force_reload_ui)
{ {
if (nullptr == this->controls) Control* PreviousControl = nullptr;
return false; Control* CurrentControl = this->controls;
Control* it = this->controls; while(nullptr != CurrentControl)
{
if (id == CurrentControl->id)
{
break;
}
PreviousControl = CurrentControl;
CurrentControl = CurrentControl->next;
}
if (id == it->id) if (nullptr != CurrentControl)
{ {
this->controls = it->next; if(nullptr == PreviousControl)
delete it;
this->controlCount--;
if (force_reload_ui)
{ {
jsonReload(); this->controls = CurrentControl->next;
} }
else else
{ {
jsonDom(0); PreviousControl->next = CurrentControl->next;
} }
return true; delete CurrentControl;
}
Control* it_next = it->next;
while (nullptr != it_next && id != it_next->id)
{
it = it_next;
it_next = it_next->next;
}
if (nullptr != it_next)
{
it->next = it_next->next;
delete it_next;
this->controlCount--; this->controlCount--;
if (force_reload_ui) if (force_reload_ui)
{ {