From a6335fed223a6847fc11c89356dd59afce6a44ba Mon Sep 17 00:00:00 2001 From: Just Call Me Koko Date: Wed, 25 Oct 2023 22:25:02 -0400 Subject: [PATCH] Paginated Mini menu and fix status bar --- esp32_marauder/MenuFunctions.cpp | 46 +++++++++++++++++++++++--------- esp32_marauder/MenuFunctions.h | 7 ++--- esp32_marauder/WiFiScan.cpp | 24 ++++++++++------- esp32_marauder/configs.h | 9 +++++-- 4 files changed, 59 insertions(+), 27 deletions(-) diff --git a/esp32_marauder/MenuFunctions.cpp b/esp32_marauder/MenuFunctions.cpp index c5769d4..998c253 100644 --- a/esp32_marauder/MenuFunctions.cpp +++ b/esp32_marauder/MenuFunctions.cpp @@ -393,14 +393,18 @@ MenuFunctions::MenuFunctions() #endif //// END LV_ARDUINO STUFF -void MenuFunctions::buttonNotSelected(uint8_t b) { +void MenuFunctions::buttonNotSelected(uint8_t b, int8_t x) { + if (x == -1) + x = b; display_obj.tft.setFreeFont(NULL); - display_obj.key[b].drawButton(false, current_menu->list->get(b).name); + display_obj.key[b].drawButton(false, current_menu->list->get(x).name); } -void MenuFunctions::buttonSelected(uint8_t b) { +void MenuFunctions::buttonSelected(uint8_t b, int8_t x) { + if (x == -1) + x = b; display_obj.tft.setFreeFont(NULL); - display_obj.key[b].drawButton(true, current_menu->list->get(b).name); + display_obj.key[b].drawButton(true, current_menu->list->get(x).name); } // Function to check menu input @@ -657,9 +661,13 @@ void MenuFunctions::main(uint32_t currentTime) (wifi_scan_obj.currentScanMode == OTA_UPDATE)) { if (current_menu->selected > 0) { current_menu->selected--; - this->buttonSelected(current_menu->selected); + if (current_menu->selected < this->menu_start_index) { + this->buildButtons(current_menu, current_menu->selected); + this->displayCurrentMenu(current_menu->selected); + } + this->buttonSelected(current_menu->selected - this->menu_start_index, current_menu->selected); if (!current_menu->list->get(current_menu->selected + 1).selected) - this->buttonNotSelected(current_menu->selected + 1); + this->buttonNotSelected(current_menu->selected + 1 - this->menu_start_index, current_menu->selected + 1); } } else if ((wifi_scan_obj.currentScanMode == WIFI_PACKET_MONITOR) || @@ -674,11 +682,19 @@ void MenuFunctions::main(uint32_t currentTime) (wifi_scan_obj.currentScanMode == OTA_UPDATE)) { if (current_menu->selected < current_menu->list->size() - 1) { current_menu->selected++; - this->buttonSelected(current_menu->selected); + this->buttonSelected(current_menu->selected - this->menu_start_index, current_menu->selected); if (!current_menu->list->get(current_menu->selected - 1).selected) - this->buttonNotSelected(current_menu->selected - 1); + this->buttonNotSelected(current_menu->selected - 1 - this->menu_start_index, current_menu->selected - 1); + if (current_menu->selected >= BUTTON_SCREEN_LIMIT) { + this->buildButtons(current_menu, current_menu->selected + 1 - BUTTON_SCREEN_LIMIT); + this->displayCurrentMenu(current_menu->selected + 1 - BUTTON_SCREEN_LIMIT); + } } else { + if (current_menu->selected >= BUTTON_SCREEN_LIMIT) { + this->buildButtons(current_menu); + this->displayCurrentMenu(); + } current_menu->selected = 0; this->buttonSelected(current_menu->selected); if (!current_menu->list->get(current_menu->list->size() - 1).selected) @@ -827,6 +843,9 @@ void MenuFunctions::updateStatusBar() display_obj.tft.setTextColor(TFT_WHITE, STATUSBAR_COLOR); display_obj.tft.drawString(gps_obj.getNumSatsString(), 22, 0, 2); + #elif defined(HAS_SCREEN) + display_obj.tft.setTextColor(the_color, STATUSBAR_COLOR); + display_obj.tft.drawString("GPS", 0, 0, 1); #endif } #endif @@ -836,7 +855,7 @@ void MenuFunctions::updateStatusBar() // WiFi Channel Stuff if (wifi_scan_obj.set_channel != wifi_scan_obj.old_channel) { wifi_scan_obj.old_channel = wifi_scan_obj.set_channel; - display_obj.tft.fillRect(50, 0, 50, STATUS_BAR_WIDTH, STATUSBAR_COLOR); + display_obj.tft.fillRect(50, 0, TFT_WIDTH * 0.21, STATUS_BAR_WIDTH, STATUSBAR_COLOR); #ifdef HAS_ILI9341 display_obj.tft.drawString("CH: " + (String)wifi_scan_obj.set_channel, 50, 0, 2); #endif @@ -1589,6 +1608,7 @@ void MenuFunctions::buildButtons(Menu * menu, int starting_index) { if (menu->list != NULL) { + this->menu_start_index = starting_index; for (uint8_t i = 0; i < menu->list->size(); i++) { TFT_eSPI_Button new_button; @@ -1611,7 +1631,7 @@ void MenuFunctions::buildButtons(Menu * menu, int starting_index) } -void MenuFunctions::displayCurrentMenu() +void MenuFunctions::displayCurrentMenu(uint8_t start_index) { //Serial.println(F("Displaying current menu...")); display_obj.clearScreen(); @@ -1629,7 +1649,7 @@ void MenuFunctions::displayCurrentMenu() display_obj.tft.setFreeFont(NULL); display_obj.tft.setTextSize(1); #endif - for (uint8_t i = 0; i < current_menu->list->size(); i++) + for (uint8_t i = start_index; i < current_menu->list->size(); i++) { #ifdef HAS_ILI9341 if (!current_menu->list->get(i).selected) @@ -1650,9 +1670,9 @@ void MenuFunctions::displayCurrentMenu() #if defined(MARAUDER_MINI) || defined(MARAUDER_M5STICKC) if ((current_menu->selected == i) || (current_menu->list->get(i).selected)) - display_obj.key[i].drawButton(true, current_menu->list->get(i).name); + display_obj.key[i - start_index].drawButton(true, current_menu->list->get(i).name); else - display_obj.key[i].drawButton(false, current_menu->list->get(i).name); + display_obj.key[i - start_index].drawButton(false, current_menu->list->get(i).name); #endif } display_obj.tft.setFreeFont(NULL); diff --git a/esp32_marauder/MenuFunctions.h b/esp32_marauder/MenuFunctions.h index 07901ce..f39a5f9 100644 --- a/esp32_marauder/MenuFunctions.h +++ b/esp32_marauder/MenuFunctions.h @@ -116,6 +116,7 @@ class MenuFunctions String u_result = ""; uint32_t initTime = 0; + uint8_t menu_start_index = 0; // Main menu stuff @@ -163,8 +164,8 @@ class MenuFunctions String callSetting(String key); void runBoolSetting(String ley); void displaySetting(String key, Menu* menu, int index); - void buttonSelected(uint8_t b); - void buttonNotSelected(uint8_t b); + void buttonSelected(uint8_t b, int8_t x = -1); + void buttonNotSelected(uint8_t b, int8_t x = -1); uint8_t updateTouch(uint16_t *x, uint16_t *y, uint16_t threshold = 600); @@ -195,7 +196,7 @@ class MenuFunctions void buildButtons(Menu* menu, int starting_index = 0); void changeMenu(Menu* menu); void drawStatusBar(); - void displayCurrentMenu(); + void displayCurrentMenu(uint8_t start_index = 0); void main(uint32_t currentTime); void RunSetup(); void orientDisplay(); diff --git a/esp32_marauder/WiFiScan.cpp b/esp32_marauder/WiFiScan.cpp index 74631a9..7f763bd 100644 --- a/esp32_marauder/WiFiScan.cpp +++ b/esp32_marauder/WiFiScan.cpp @@ -518,9 +518,11 @@ void WiFiScan::startWiFiAttacks(uint8_t scan_mode, uint16_t color, String title_ display_obj.initScrollValues(true); display_obj.tft.setTextWrap(false); display_obj.tft.setTextColor(TFT_BLACK, color); - display_obj.tft.fillRect(0,16,240,16, color); - display_obj.tft.drawCentreString((String)title_string,120,16,2); - display_obj.touchToExit(); + #ifdef HAS_ILI9341 + display_obj.tft.fillRect(0,16,240,16, color); + display_obj.tft.drawCentreString((String)title_string,120,16,2); + display_obj.touchToExit(); + #endif display_obj.tft.setTextColor(TFT_GREEN, TFT_BLACK); #endif @@ -1857,9 +1859,11 @@ void WiFiScan::RunSourApple(uint8_t scan_mode, uint16_t color) { display_obj.initScrollValues(true); display_obj.tft.setTextWrap(false); display_obj.tft.setTextColor(TFT_BLACK, color); - display_obj.tft.fillRect(0,16,240,16, color); - display_obj.tft.drawCentreString("Sour Apple",120,16,2); - display_obj.touchToExit(); + #ifdef HAS_ILI9341 + display_obj.tft.fillRect(0,16,240,16, color); + display_obj.tft.drawCentreString("Sour Apple",120,16,2); + display_obj.touchToExit(); + #endif display_obj.tft.setTextColor(TFT_GREEN, TFT_BLACK); #endif @@ -1877,9 +1881,11 @@ void WiFiScan::RunSwiftpairSpam(uint8_t scan_mode, uint16_t color) { display_obj.initScrollValues(true); display_obj.tft.setTextWrap(false); display_obj.tft.setTextColor(TFT_BLACK, color); - display_obj.tft.fillRect(0,16,240,16, color); - display_obj.tft.drawCentreString("Swiftpair Spam",120,16,2); - display_obj.touchToExit(); + #ifdef HAS_ILI9341 + display_obj.tft.fillRect(0,16,240,16, color); + display_obj.tft.drawCentreString("Swiftpair Spam",120,16,2); + display_obj.touchToExit(); + #endif display_obj.tft.setTextColor(TFT_GREEN, TFT_BLACK); #endif diff --git a/esp32_marauder/configs.h b/esp32_marauder/configs.h index 117ba00..d36cf7f 100644 --- a/esp32_marauder/configs.h +++ b/esp32_marauder/configs.h @@ -10,9 +10,9 @@ //// BOARD TARGETS //#define MARAUDER_M5STICKC - //#define MARAUDER_MINI + #define MARAUDER_MINI //#define MARAUDER_V4 - #define MARAUDER_V6 + //#define MARAUDER_V6 //#define MARAUDER_V6_1 //#define MARAUDER_KIT //#define GENERIC_ESP32 @@ -272,6 +272,7 @@ //#define MENU_FONT &FreeMonoBold9pt7b //#define MENU_FONT &FreeSans9pt7b //#define MENU_FONT &FreeSansBold9pt7b + #define BUTTON_SCREEN_LIMIT 12 #define BUTTON_ARRAY_LEN 12 #define STATUS_BAR_WIDTH (TFT_HEIGHT/16) #define LVGL_TICK_PERIOD 6 @@ -327,6 +328,7 @@ //#define MENU_FONT &FreeMonoBold9pt7b //#define MENU_FONT &FreeSans9pt7b //#define MENU_FONT &FreeSansBold9pt7b + #define BUTTON_SCREEN_LIMIT 12 #define BUTTON_ARRAY_LEN 12 #define STATUS_BAR_WIDTH 16 #define LVGL_TICK_PERIOD 6 @@ -384,6 +386,7 @@ //#define MENU_FONT &FreeMonoBold9pt7b //#define MENU_FONT &FreeSans9pt7b //#define MENU_FONT &FreeSansBold9pt7b + #define BUTTON_SCREEN_LIMIT 12 #define BUTTON_ARRAY_LEN 12 #define STATUS_BAR_WIDTH 16 #define LVGL_TICK_PERIOD 6 @@ -442,6 +445,7 @@ //#define MENU_FONT &FreeMonoBold9pt7b //#define MENU_FONT &FreeSans9pt7b //#define MENU_FONT &FreeSansBold9pt7b + #define BUTTON_SCREEN_LIMIT 12 #define BUTTON_ARRAY_LEN 12 #define STATUS_BAR_WIDTH 16 #define LVGL_TICK_PERIOD 6 @@ -510,6 +514,7 @@ //#define MENU_FONT &FreeMonoBold9pt7b //#define MENU_FONT &FreeSans9pt7b //#define MENU_FONT &FreeSansBold9pt7b + #define BUTTON_SCREEN_LIMIT 10 #define BUTTON_ARRAY_LEN 12 #define STATUS_BAR_WIDTH (TFT_HEIGHT/16) #define LVGL_TICK_PERIOD 6