Better mini menu selection for APs

This commit is contained in:
Just Call Me Koko
2022-10-19 11:49:41 -04:00
parent c7e39744f3
commit bd53320122
2 changed files with 24 additions and 18 deletions
+23 -17
View File
@@ -1030,7 +1030,8 @@ void MenuFunctions::main(uint32_t currentTime)
if (current_menu->selected > 0) {
current_menu->selected--;
this->buttonSelected(current_menu->selected);
this->buttonNotSelected(current_menu->selected + 1);
if (!current_menu->list->get(current_menu->selected + 1).selected)
this->buttonNotSelected(current_menu->selected + 1);
}
}
else if ((wifi_scan_obj.currentScanMode == WIFI_PACKET_MONITOR) ||
@@ -1045,7 +1046,8 @@ void MenuFunctions::main(uint32_t currentTime)
if (current_menu->selected < current_menu->list->size() - 1) {
current_menu->selected++;
this->buttonSelected(current_menu->selected);
this->buttonNotSelected(current_menu->selected - 1);
if (!current_menu->list->get(current_menu->selected - 1).selected)
this->buttonNotSelected(current_menu->selected - 1);
}
}
else if ((wifi_scan_obj.currentScanMode == WIFI_PACKET_MONITOR) ||
@@ -1672,23 +1674,27 @@ void MenuFunctions::RunSetup()
addNodes(&wifiAPMenu, text09, TFT_LIGHTGREY, NULL, 0, [this]() {
changeMenu(wifiAPMenu.parentMenu);
});
/*addNodes(&wifiAPMenu, "potato", TFT_NAVY, NULL, KEYBOARD_ICO, [this](){
changeMenu(wifiAPMenu.parentMenu);
});*/
for (int i = 0; i < access_points->size(); i++) {
addNodes(&wifiAPMenu, access_points->get(i).essid, TFT_CYAN, NULL, KEYBOARD_ICO, [this, i](){
AccessPoint new_ap = access_points->get(i);
new_ap.selected = !access_points->get(i).selected;
// Change selection status of menu node
MenuNode new_node = current_menu->list->get(i + 1);
new_node.selected = !current_menu->list->get(i + 1).selected;
current_menu->list->set(i + 1, new_node);
// Change selection status of button key
if (new_ap.selected) {
new_ap.essid = ">" + access_points->get(i).essid;
changeMenu(current_menu);
this->buttonSelected(i + 1);
//changeMenu(current_menu);
} else {
new_ap.essid = access_points->get(i).essid;
changeMenu(current_menu);
this->buttonNotSelected(i + 1);
//changeMenu(current_menu);
}
access_points->set(i, new_ap);
//changeMenu(wifiAPMenu.parentMenu);
});
}, access_points->get(i).selected);
}
changeMenu(&wifiAPMenu);
});
@@ -1970,7 +1976,7 @@ void MenuFunctions::addNodes(Menu * menu, String name, uint16_t color, Menu * ch
//menu->list->add(MenuNode{name, color, place, callable});
}
void MenuFunctions::buildButtons(Menu * menu)
void MenuFunctions::buildButtons(Menu * menu, int starting_index)
{
//Serial.println("Bulding buttons...");
if (menu->list != NULL)
@@ -1980,8 +1986,8 @@ void MenuFunctions::buildButtons(Menu * menu)
for (uint8_t i = 0; i < menu->list->size(); i++)
{
TFT_eSPI_Button new_button;
char buf[menu->list->get(i).name.length() + 1] = {};
menu->list->get(i).name.toCharArray(buf, menu->list->get(i).name.length() + 1);
char buf[menu->list->get(starting_index + i).name.length() + 1] = {};
menu->list->get(starting_index + i).name.toCharArray(buf, menu->list->get(starting_index + i).name.length() + 1);
display_obj.key[i].initButton(&display_obj.tft,
KEY_X + 0 * (KEY_W + KEY_SPACING_X),
KEY_Y + i * (KEY_H + KEY_SPACING_Y), // x, y, w, h, outline, fill, text
@@ -1989,7 +1995,7 @@ void MenuFunctions::buildButtons(Menu * menu)
KEY_H,
TFT_BLACK, // Outline
TFT_BLACK, // Fill
menu->list->get(i).color, // Text
menu->list->get(starting_index + i).color, // Text
buf,
KEY_TEXTSIZE);
@@ -2036,10 +2042,10 @@ void MenuFunctions::displayCurrentMenu()
#endif
#ifdef MARAUDER_MINI
if (current_menu->selected != i)
display_obj.key[i].drawButton(false, current_menu->list->get(i).name);
else
if ((current_menu->selected == i) || (current_menu->list->get(i).selected))
display_obj.key[i].drawButton(true, current_menu->list->get(i).name);
else
display_obj.key[i].drawButton(false, current_menu->list->get(i).name);
#endif
}
display_obj.tft.setFreeFont(NULL);