diff --git a/docs/flasher/firmware/firmware.bin b/docs/flasher/firmware/firmware.bin index 343a397..685a7b5 100644 Binary files a/docs/flasher/firmware/firmware.bin and b/docs/flasher/firmware/firmware.bin differ diff --git a/docs/flasher/firmware/manifest.json b/docs/flasher/firmware/manifest.json index d028fd9..142f956 100644 --- a/docs/flasher/firmware/manifest.json +++ b/docs/flasher/firmware/manifest.json @@ -1,6 +1,6 @@ { "name": "AWTRIX Light", - "version": "0.39", + "version": "0.40", "home_assistant_domain": "AwtrixLight", "funding_url": "https://blueforcer.de", "new_install_prompt_erase": true, diff --git a/docs/onscreen.md b/docs/onscreen.md index 759e136..caa5f0f 100644 --- a/docs/onscreen.md +++ b/docs/onscreen.md @@ -17,5 +17,6 @@ Hold down the middle button for 2s to exit the current menu and to save your set | `DATE` | Allows selection of date format. | | `WEEKDAY` | Allows selection of start of week. | | `TEMP` | Allows selection of temperature system (°C or °F). | +| `APPS` | Allows to enable or disable internal apps | | `UPDATE` | Check and download new firmware if available. | diff --git a/lib/MatrixUI/MatrixDisplayUi.cpp b/lib/MatrixUI/MatrixDisplayUi.cpp index 55baa2c..ae68344 100644 --- a/lib/MatrixUI/MatrixDisplayUi.cpp +++ b/lib/MatrixUI/MatrixDisplayUi.cpp @@ -185,38 +185,42 @@ int8_t MatrixDisplayUi::update() void MatrixDisplayUi::tick() { this->state.ticksSinceLastStateSwitch++; - switch (this->state.frameState) - { - case IN_TRANSITION: - if (this->state.ticksSinceLastStateSwitch >= this->ticksPerTransition) - { - this->state.frameState = FIXED; - this->state.currentFrame = getnextAppNumber(); - this->state.ticksSinceLastStateSwitch = 0; - this->nextAppNumber = -1; - } - break; - case FIXED: - // Revert manuelControll - if (this->state.manuelControll) - { - this->state.frameTransitionDirection = this->lastTransitionDirection; - this->state.manuelControll = false; - } - if (this->state.ticksSinceLastStateSwitch >= this->ticksPerFrame) - { - if (this->setAutoTransition) - { - this->state.frameState = IN_TRANSITION; + if (this->AppCount > 0) + { + switch (this->state.frameState) + { + case IN_TRANSITION: + if (this->state.ticksSinceLastStateSwitch >= this->ticksPerTransition) + { + this->state.frameState = FIXED; + this->state.currentFrame = getnextAppNumber(); + this->state.ticksSinceLastStateSwitch = 0; + this->nextAppNumber = -1; } - this->state.ticksSinceLastStateSwitch = 0; + break; + case FIXED: + // Revert manuelControll + if (this->state.manuelControll) + { + this->state.frameTransitionDirection = this->lastTransitionDirection; + this->state.manuelControll = false; + } + if (this->state.ticksSinceLastStateSwitch >= this->ticksPerFrame) + { + if (this->setAutoTransition) + { + this->state.frameState = IN_TRANSITION; + } + this->state.ticksSinceLastStateSwitch = 0; + } + break; } - break; } this->matrix->clear(); - this->drawApp(); + if (this->AppCount > 0) + this->drawApp(); this->drawOverlays(); this->matrix->show(); } diff --git a/src/DisplayManager.cpp b/src/DisplayManager.cpp index ef182d2..0220754 100644 --- a/src/DisplayManager.cpp +++ b/src/DisplayManager.cpp @@ -91,6 +91,11 @@ void DisplayManager_::drawJPG(uint16_t x, uint16_t y, fs::File jpgFile) TJpgDec.drawFsJpg(x, y, jpgFile); } +void DisplayManager_::drawBMP(int16_t x, int16_t y, const uint16_t bitmap[], int16_t w, int16_t h) +{ + matrix.drawRGBBitmap(y, x, bitmap, w, h); +} + void DisplayManager_::applyAllSettings() { ui.setTargetFPS(MATRIX_FPS); @@ -219,21 +224,18 @@ void pushCustomFrame(String name, int position) void removeCustomFrame(const String &name) { - // Suchen Sie nach dem Element, das dem Namen entspricht auto it = std::find_if(Apps.begin(), Apps.end(), [&name](const std::pair &appPair) { return appPair.first == name; }); - // Wenn das Element gefunden wurde, entfernen Sie es aus dem Vektor if (it != Apps.end()) { Apps.erase(it); - ui.setApps(Apps); // Aktualisieren Sie die Frames + ui.setApps(Apps); } } void DisplayManager_::generateCustomPage(String name, String payload) { - if (payload == "" && customFrames.count(name)) { customFrames.erase(customFrames.find(name)); @@ -261,7 +263,6 @@ void DisplayManager_::generateCustomPage(String name, String payload) customFrame.pushIcon = doc.containsKey("pushIcon") ? doc["pushIcon"] : 0; customFrame.name = name; customFrame.text = utf8ascii(doc["text"].as()); - customFrame.color = doc.containsKey("color") ? doc["color"].is() ? hexToRgb565(doc["color"]) : doc["color"].is() ? hexToRgb565(doc["color"].as()) : TEXTCOLOR_565 : TEXTCOLOR_565; @@ -342,25 +343,49 @@ void DisplayManager_::generateNotification(String payload) } } -void DisplayManager_::loadApps() +void DisplayManager_::loadNativeApps() { - Apps.clear(); - Apps.push_back(std::make_pair("time", TimeFrame)); - if (SHOW_DATE) - Apps.push_back(std::make_pair("date", DateFrame)); - if (SHOW_TEMP) - Apps.push_back(std::make_pair("temp", TempFrame)); - if (SHOW_HUM) - Apps.push_back(std::make_pair("hum", HumFrame)); - if (SHOW_BATTERY) - Apps.push_back(std::make_pair("bat", BatFrame)); - // if (SHOW_WEATHER) - // Apps.push_back(std::make_pair(5, WeatherFrame)); - nativeAppsCount = Apps.size(); - ui.setApps(Apps); // Add frames - if (AUTO_TRANSITION && nativeAppsCount == 1) + // Define a helper function to check and update an app + auto updateApp = [&](const String &name, AppCallback callback, bool show, size_t position) + { + auto it = std::find_if(Apps.begin(), Apps.end(), [&](const std::pair &app) + { return app.first == name; }); + if (it != Apps.end()) + { + if (!show) + { + Apps.erase(it); + } + } + else + { + if (show) + { + Apps.insert(Apps.begin() + position, std::make_pair(name, callback)); + } + } + }; + + // Update the "time" app at position 0 + updateApp("time", TimeFrame, SHOW_TIME, 0); + + // Update the "date" app at position 1 + updateApp("date", DateFrame, SHOW_DATE, 1); + + // Update the "temp" app at position 2 + updateApp("temp", TempFrame, SHOW_TEMP, 2); + + // Update the "hum" app at position 3 + updateApp("hum", HumFrame, SHOW_HUM, 3); + + // Update the "bat" app at position 4 + updateApp("bat", BatFrame, SHOW_BAT, 4); + + ui.setApps(Apps); + if (AUTO_TRANSITION && Apps.size() == 1) + { setAutoTransition(false); - StartAppUpdater(); + } } void DisplayManager_::setup() @@ -545,8 +570,8 @@ void DisplayManager_::drawProgressBar(int cur, int total) void DisplayManager_::drawMenuIndicator(int cur, int total) { - int menuItemWidth = 2; - int totalWidth = total * menuItemWidth + (total - 2); + int menuItemWidth = 1; + int totalWidth = total * menuItemWidth + (total - 1); int leftMargin = (MATRIX_WIDTH - totalWidth) / 2; int pixelSpacing = 1; for (int i = 0; i < total; i++) diff --git a/src/DisplayManager.h b/src/DisplayManager.h index d5e810b..a676dd8 100644 --- a/src/DisplayManager.h +++ b/src/DisplayManager.h @@ -32,7 +32,7 @@ public: void rightButton(); void dismissNotify(); void HSVtext(int16_t, int16_t, const char *, bool); - void loadApps(); + void loadNativeApps(); void nextApp(); void previousApp(); void leftButton(); @@ -55,6 +55,7 @@ public: void drawJPG(uint16_t x, uint16_t y, fs::File jpgFile); void drawProgressBar(int cur, int total); void drawMenuIndicator(int cur, int total); + void drawBMP(int16_t x, int16_t y, const uint16_t bitmap[], int16_t w, int16_t h); }; extern DisplayManager_ &DisplayManager; diff --git a/src/Frames.h b/src/Frames.h index 195e122..f834e7b 100644 --- a/src/Frames.h +++ b/src/Frames.h @@ -111,7 +111,7 @@ void TimeFrame(FastLED_NeoMatrix *matrix, MatrixDisplayUiState *state, int16_t x timeInfo = localtime(&now); char t[20]; strftime(t, sizeof(t), TIME_FORMAT.c_str(), localtime(&now)); - DisplayManager.printText(0 + x, 6 + y, t, true, true); + DisplayManager.printText(0 + x, 6 + y, t, true, false); if (!SHOW_WEEKDAY) return; @@ -184,7 +184,7 @@ void HumFrame(FastLED_NeoMatrix *matrix, MatrixDisplayUiState *state, int16_t x, return; CURRENT_APP = "Humidity"; DisplayManager.getInstance().resetTextColor(); - matrix->drawRGBBitmap(x, y + 1, get_icon(2075), 8, 8); + matrix->drawRGBBitmap(x, y + 1, get_icon(2075), 8,8); matrix->setCursor(14 + x, 6 + y); int humidity = CURRENT_HUM; // Temperatur ohne Nachkommastellen matrix->print(humidity); // Ausgabe der Temperatur @@ -214,7 +214,6 @@ void MenuFrame(FastLED_NeoMatrix *matrix, MatrixDisplayUiState *state) void AlarmFrame(FastLED_NeoMatrix *matrix, MatrixDisplayUiState *state) { if (ALARM_ACTIVE) - { matrix->fillScreen(matrix->Color(255, 0, 0)); CURRENT_APP = "Alarm"; diff --git a/src/Functions.h b/src/Functions.h index ca194dd..b864d6c 100644 --- a/src/Functions.h +++ b/src/Functions.h @@ -6,7 +6,7 @@ #include std::map CharMap = { - {32, 3}, {33, 2}, {34, 4}, {35, 4}, {36, 4}, {37, 4}, {38, 4}, {39, 2}, {40, 3}, {41, 3}, {42, 4}, {43, 4}, {44, 3}, {45, 4}, {46, 2}, {47, 4}, {48, 4}, {49, 4}, {50, 4}, {51, 4}, {52, 4}, {53, 4}, {54, 4}, {55, 4}, {56, 4}, {57, 4}, {58, 2}, {59, 3}, {60, 4}, {61, 4}, {62, 4}, {63, 4}, {64, 4}, {65, 4}, {66, 4}, {67, 4}, {68, 4}, {69, 4}, {70, 4}, {71, 4}, {72, 4}, {73, 2}, {74, 4}, {75, 4}, {76, 4}, {77, 6}, {78, 5}, {79, 4}, {80, 4}, {81, 5}, {82, 4}, {83, 4}, {84, 4}, {85, 4}, {86, 4}, {87, 6}, {88, 4}, {89, 4}, {90, 4}, {91, 4}, {92, 4}, {93, 4}, {94, 4}, {95, 4}, {96, 3}, {97, 4}, {98, 4}, {99, 4}, {100, 4}, {101, 4}, {102, 4}, {103, 4}, {104, 4}, {105, 2}, {106, 4}, {107, 4}, {108, 4}, {109, 4}, {110, 4}, {111, 4}, {112, 4}, {113, 4}, {114, 4}, {115, 4}, {116, 4}, {117, 4}, {118, 4}, {119, 4}, {120, 4}, {121, 4}, {122, 4}, {123, 4}, {124, 2}, {125, 4}, {126, 4}, {161, 2}, {162, 4}, {163, 4}, {164, 4}, {165, 4}, {166, 2}, {167, 4}, {168, 4}, {169, 4}, {170, 4}, {171, 3}, {172, 4}, {173, 3}, {174, 4}, {175, 4}, {176, 4}, {177, 4}, {178, 4}, {179, 4}, {180, 3}, {181, 4}, {182, 4}, {183, 4}, {184, 4}, {185, 2}, {186, 4}, {187, 3}, {188, 4}, {189, 4}, {190, 4}, {191, 4}, {192, 4}, {193, 4}, {194, 4}, {195, 4}, {196, 4}, {197, 4}, {198, 4}, {199, 4}, {200, 4}, {201, 4}, {202, 4}, {203, 4}, {204, 4}, {205, 4}, {206, 4}, {207, 4}, {208, 4}, {209, 4}, {210, 4}, {211, 4}, {212, 4}, {213, 4}, {214, 4}, {215, 4}, {216, 4}, {217, 4}, {218, 4}, {219, 4}, {220, 4}, {221, 4}, {222, 4}, {223, 4}, {224, 4}, {225, 4}, {226, 4}, {227, 4}, {228, 4}, {229, 4}, {230, 4}, {231, 4}, {232, 4}, {233, 4}, {234, 4}, {235, 4}, {236, 3}, {237, 3}, {238, 4}, {239, 4}, {240, 4}, {241, 4}, {242, 4}, {243, 4}, {244, 4}, {245, 4}, {246, 4}, {247, 4}, {248, 4}, {249, 4}, {250, 4}, {251, 4}, {252, 4}, {253, 4}, {254, 4}, {255, 4}, {285, 2}, {338, 4}, {339, 4}, {352, 4}, {353, 4}, {376, 4}, {381, 4}, {382, 4}, {3748, 2}, {5024, 2}, {8226, 2}, {8230, 4}, {8364, 4}, {65533, 4}}; + {32, 2}, {33, 2}, {34, 4}, {35, 4}, {36, 4}, {37, 4}, {38, 4}, {39, 2}, {40, 3}, {41, 3}, {42, 4}, {43, 4}, {44, 3}, {45, 4}, {46, 2}, {47, 4}, {48, 4}, {49, 4}, {50, 4}, {51, 4}, {52, 4}, {53, 4}, {54, 4}, {55, 4}, {56, 4}, {57, 4}, {58, 2}, {59, 3}, {60, 4}, {61, 4}, {62, 4}, {63, 4}, {64, 4}, {65, 4}, {66, 4}, {67, 4}, {68, 4}, {69, 4}, {70, 4}, {71, 4}, {72, 4}, {73, 2}, {74, 4}, {75, 4}, {76, 4}, {77, 6}, {78, 5}, {79, 4}, {80, 4}, {81, 5}, {82, 4}, {83, 4}, {84, 4}, {85, 4}, {86, 4}, {87, 6}, {88, 4}, {89, 4}, {90, 4}, {91, 4}, {92, 4}, {93, 4}, {94, 4}, {95, 4}, {96, 3}, {97, 4}, {98, 4}, {99, 4}, {100, 4}, {101, 4}, {102, 4}, {103, 4}, {104, 4}, {105, 2}, {106, 4}, {107, 4}, {108, 4}, {109, 4}, {110, 4}, {111, 4}, {112, 4}, {113, 4}, {114, 4}, {115, 4}, {116, 4}, {117, 4}, {118, 4}, {119, 4}, {120, 4}, {121, 4}, {122, 4}, {123, 4}, {124, 2}, {125, 4}, {126, 4}, {161, 2}, {162, 4}, {163, 4}, {164, 4}, {165, 4}, {166, 2}, {167, 4}, {168, 4}, {169, 4}, {170, 4}, {171, 3}, {172, 4}, {173, 3}, {174, 4}, {175, 4}, {176, 4}, {177, 4}, {178, 4}, {179, 4}, {180, 3}, {181, 4}, {182, 4}, {183, 4}, {184, 4}, {185, 2}, {186, 4}, {187, 3}, {188, 4}, {189, 4}, {190, 4}, {191, 4}, {192, 4}, {193, 4}, {194, 4}, {195, 4}, {196, 4}, {197, 4}, {198, 4}, {199, 4}, {200, 4}, {201, 4}, {202, 4}, {203, 4}, {204, 4}, {205, 4}, {206, 4}, {207, 4}, {208, 4}, {209, 4}, {210, 4}, {211, 4}, {212, 4}, {213, 4}, {214, 4}, {215, 4}, {216, 4}, {217, 4}, {218, 4}, {219, 4}, {220, 4}, {221, 4}, {222, 4}, {223, 4}, {224, 4}, {225, 4}, {226, 4}, {227, 4}, {228, 4}, {229, 4}, {230, 4}, {231, 4}, {232, 4}, {233, 4}, {234, 4}, {235, 4}, {236, 3}, {237, 3}, {238, 4}, {239, 4}, {240, 4}, {241, 4}, {242, 4}, {243, 4}, {244, 4}, {245, 4}, {246, 4}, {247, 4}, {248, 4}, {249, 4}, {250, 4}, {251, 4}, {252, 4}, {253, 4}, {254, 4}, {255, 4}, {285, 2}, {338, 4}, {339, 4}, {352, 4}, {353, 4}, {376, 4}, {381, 4}, {382, 4}, {3748, 2}, {5024, 2}, {8226, 2}, {8230, 4}, {8364, 4}, {65533, 4}}; uint32_t hsvToRgb(uint8_t h, uint8_t s, uint8_t v) { @@ -24,7 +24,8 @@ uint16_t hexToRgb565(String hexValue) uint8_t r = strtol(hexValue.substring(0, 2).c_str(), NULL, 16); uint8_t g = strtol(hexValue.substring(2, 4).c_str(), NULL, 16); uint8_t b = strtol(hexValue.substring(4, 6).c_str(), NULL, 16); - if ((errno == ERANGE) || (r > 255) || (g > 255) || (b > 255)) { + if ((errno == ERANGE) || (r > 255) || (g > 255) || (b > 255)) + { return 0xFFFF; } uint16_t color = ((r >> 3) << 11) | ((g >> 2) << 5) | (b >> 3); diff --git a/src/GifPlayer.h b/src/GifPlayer.h index d67febf..5da1ea5 100644 --- a/src/GifPlayer.h +++ b/src/GifPlayer.h @@ -15,10 +15,10 @@ private: long lastFrameTime; bool firstFrameDone; int newframeDelay; - int lastFrame[8 * 8]; - bool lastFrameDrawn = false; + int lastFrame[8 * 8]; + bool lastFrameDrawn = false; unsigned long nextFrameTime = 0; -#define GIFHDRTAGNORM "GIF87a" +#define GIFHDRTAGNORM "GIF87a" #define GIFHDRTAGNORM1 "GIF89a" #define GIFHDRSIZE 6 FastLED_NeoMatrix *mtx; @@ -528,6 +528,7 @@ public: } } needNewFrame = false; + lastFrameTime = millis(); } public: @@ -595,15 +596,12 @@ public: if (!file) return 0; - unsigned long now = millis(); - - if (now - lastFrameTime < newframeDelay) + if (millis() - lastFrameTime < newframeDelay) { redrawLastFrame(); return 0; } - lastFrameTime = now; lastFrameDrawn = false; offsetX = x; @@ -614,8 +612,9 @@ public: byte b = readByte(); if (b == 0x2c) { - unsigned int fdelay = parseTableBasedImage(); - return fdelay; + Serial.println("Parse"); + parseTableBasedImage(); + return 0; } else if (b == 0x21) { @@ -641,12 +640,12 @@ public: else { done = true; - backUpStream(1); file.seek(0); + Serial.println("Finished"); parseGifHeader(); parseLogicalScreenDescriptor(); parseGlobalColorTable(); - drawFrame(offsetX, offsetY); + drawFrame(offsetX,offsetY); return ERROR_FINISHED; } } diff --git a/src/Globals.cpp b/src/Globals.cpp index 91515d7..a4f2958 100644 --- a/src/Globals.cpp +++ b/src/Globals.cpp @@ -17,6 +17,11 @@ void loadSettings() DATE_FORMAT = Settings.getString("DFORMAT", "%d.%m.%y"); START_ON_MONDAY = Settings.getBool("SOM", true); IS_CELSIUS = Settings.getBool("CEL", true); + SHOW_TIME = Settings.getBool("TIM", true); + SHOW_DATE = Settings.getBool("DAT", true); + SHOW_TEMP = Settings.getBool("TEMP", true); + SHOW_HUM = Settings.getBool("HUM", true); + SHOW_BAT = Settings.getBool("BAT", true); Settings.end(); } @@ -34,6 +39,12 @@ void saveSettings() Settings.putString("DFORMAT", DATE_FORMAT); Settings.putBool("SOM", START_ON_MONDAY); Settings.putBool("CEL", IS_CELSIUS); + + Settings.putBool("TIM", SHOW_TIME); + Settings.putBool("DAT", SHOW_DATE); + Settings.putBool("TEMP", SHOW_TEMP); + Settings.putBool("HUM", SHOW_HUM); + Settings.putBool("BAT", SHOW_BAT); Settings.end(); } @@ -42,7 +53,7 @@ IPAddress gateway; IPAddress subnet; IPAddress primaryDNS; IPAddress secondaryDNS; -const char *VERSION = "0.39"; +const char *VERSION = "0.40"; String MQTT_HOST = ""; uint16_t MQTT_PORT = 1883; String MQTT_USER; @@ -51,9 +62,10 @@ String MQTT_PREFIX = "AwtrixLight"; String CITY = "Berlin,de"; bool IO_BROKER = false; bool NET_STATIC = false; +bool SHOW_TIME = true; bool SHOW_DATE = true; bool SHOW_WEATHER = true; -bool SHOW_BATTERY = true; +bool SHOW_BAT = true; bool SHOW_TEMP = true; bool SHOW_HUM = true; bool SHOW_SECONDS = true; diff --git a/src/Globals.h b/src/Globals.h index f09fb13..c0cac9c 100644 --- a/src/Globals.h +++ b/src/Globals.h @@ -16,9 +16,10 @@ extern String MQTT_PREFIX; extern String CITY; extern bool IO_BROKER; extern bool NET_STATIC; +extern bool SHOW_TIME; extern bool SHOW_DATE; extern bool SHOW_WEATHER; -extern bool SHOW_BATTERY; +extern bool SHOW_BAT; extern bool SHOW_TEMP; extern bool SHOW_HUM; extern bool SHOW_SECONDS; diff --git a/src/MenuManager.cpp b/src/MenuManager.cpp index dae2c4b..f31b988 100644 --- a/src/MenuManager.cpp +++ b/src/MenuManager.cpp @@ -4,6 +4,7 @@ #include #include #include +#include String menuText; int menuSelection; @@ -23,7 +24,8 @@ enum MenuState TimeFormatMenu, DateFormatMenu, WeekdayMenu, - TempMenu + TempMenu, + Appmenu, }; const char *menuItems[] PROGMEM = { @@ -37,10 +39,11 @@ const char *menuItems[] PROGMEM = { "DATE", "WEEKDAY", "TEMP", + "APPS", "UPDATE"}; int8_t menuIndex = 0; -uint8_t menuItemCount = 11; +uint8_t menuItemCount = 12; const char *timeFormat[] PROGMEM = { "%H:%M:%S", @@ -65,6 +68,16 @@ const char *dateFormat[] PROGMEM = { int8_t dateFormatIndex; uint8_t dateFormatCount = 9; +const char *appsItems[][2] PROGMEM = { + {"13", "time"}, + {"1158", "date"}, + {"234", "temp"}, + {"2075", "hum"}, + {"1486", "bat"}}; + +int8_t appsIndex; +uint8_t appsCount = 5; + MenuState currentState = MainMenu; uint16_t textColors[] PROGMEM = { @@ -95,71 +108,60 @@ MenuManager_ &MenuManager = MenuManager.getInstance(); String MenuManager_::menutext() { - if (currentState == MainMenu) + time_t now = time(nullptr); + char t[20]; + switch (currentState) { + case MainMenu: DisplayManager.drawMenuIndicator(menuIndex, menuItemCount); - return (menuItems[menuIndex]); - } - else if (currentState == BrightnessMenu) - { - if (AUTO_BRIGHTNESS) - { - return ("AUTO"); - } - else - { - return (String(BRIGHTNESS_PERCENT) + "%"); - } - } - else if (currentState == FPSMenu) - { + return menuItems[menuIndex]; + case BrightnessMenu: + return AUTO_BRIGHTNESS ? "AUTO" : String(BRIGHTNESS_PERCENT) + "%"; + case FPSMenu: return String(MATRIX_FPS) + " FPS"; - } - else if (currentState == ColorMenu) - { + case ColorMenu: DisplayManager.setTextColor(textColors[currentColor]); - String colorStr = String(textColors[currentColor], HEX); - while (colorStr.length() < 4) - { - colorStr = "0" + colorStr; - } - return colorStr; - } - else if (currentState == SwitchMenu) - { + return "0x" + String(textColors[currentColor], HEX); + case SwitchMenu: return AUTO_TRANSITION ? "ON" : "OFF"; - } - else if (currentState == TspeedMenu) - { - float seconds = (float)TIME_PER_TRANSITION / 1000.0; - return String(seconds, 1) + "s"; - } - else if (currentState == AppTimeMenu) - { - float seconds = (float)TIME_PER_APP / 1000.0; - return String(seconds, 0) + "s"; - } - else if (currentState == TimeFormatMenu) - { - time_t now = time(nullptr); - char t[20]; + case TspeedMenu: + return String(TIME_PER_TRANSITION / 1000.0, 1) + "s"; + case AppTimeMenu: + return String(TIME_PER_APP / 1000.0, 0) + "s"; + case TimeFormatMenu: strftime(t, sizeof(t), timeFormat[timeFormatIndex], localtime(&now)); return t; - } - else if (currentState == DateFormatMenu) - { - time_t now = time(nullptr); - char t[20]; + case DateFormatMenu: strftime(t, sizeof(t), dateFormat[dateFormatIndex], localtime(&now)); return t; - } - else if (currentState == WeekdayMenu) - { + case WeekdayMenu: return START_ON_MONDAY ? "MON" : "SUN"; - } - else if (currentState == TempMenu) - { + case TempMenu: return IS_CELSIUS ? "°C" : "°F"; + case Appmenu: + switch (appsIndex) + { + case 0: + DisplayManager.drawBMP(0, 0, get_icon(13), 8, 8); + return SHOW_TIME ? "ON" : "OFF"; + case 1: + DisplayManager.drawBMP(0, 0, get_icon(1158), 8, 8); + return SHOW_DATE ? "ON" : "OFF"; + case 2: + DisplayManager.drawBMP(0, 0, get_icon(234), 8, 8); + return SHOW_TEMP ? "ON" : "OFF"; + case 3: + DisplayManager.drawBMP(0, 0, get_icon(2075), 8, 8); + return SHOW_HUM ? "ON" : "OFF"; + case 4: + DisplayManager.drawBMP(0, 0, get_icon(1486), 8, 8); + return SHOW_BAT ? "ON" : "OFF"; + default: + break; + } + break; + default: + break; } return ""; } @@ -168,205 +170,199 @@ void MenuManager_::rightButton() { if (!inMenu) return; - if (currentState == MainMenu) - { - menuIndex++; - if (menuIndex > menuItemCount - 1) - { - menuIndex = 0; // Wrap around to the first menu item - } - } - else if (currentState == BrightnessMenu) + switch (currentState) { + case MainMenu: + menuIndex = (menuIndex + 1) % menuItemCount; + break; + case BrightnessMenu: if (!AUTO_BRIGHTNESS) { - ++BRIGHTNESS_PERCENT; - if (BRIGHTNESS_PERCENT > 100) - BRIGHTNESS_PERCENT = 1; + BRIGHTNESS_PERCENT = (BRIGHTNESS_PERCENT % 100) + 1; BRIGHTNESS = map(BRIGHTNESS_PERCENT, 0, 100, 0, 255); DisplayManager.setBrightness(BRIGHTNESS); } - } - else if (currentState == FPSMenu) - { + break; + case FPSMenu: if (MATRIX_FPS < 30) ++MATRIX_FPS; - } - else if (currentState == ColorMenu) - { - int arraySize = sizeof(textColors) / sizeof(textColors[0]); - currentColor = (currentColor + 1) % arraySize; - } - else if (currentState == SwitchMenu) - { + break; + case ColorMenu: + currentColor = (currentColor + 1) % (sizeof(textColors) / sizeof(textColors[0])); + break; + case SwitchMenu: AUTO_TRANSITION = !AUTO_TRANSITION; - } - else if (currentState == TspeedMenu) - { + break; + case TspeedMenu: TIME_PER_TRANSITION = min(1200, TIME_PER_TRANSITION + 100); - } - else if (currentState == AppTimeMenu) - { + break; + case AppTimeMenu: TIME_PER_APP = min(30000, TIME_PER_APP + 1000); - } - else if (currentState == TimeFormatMenu) - { - timeFormatIndex++; - if (timeFormatIndex > timeFormatCount - 1) - { - timeFormatIndex = 0; // Wrap around to the first menu item - } - } - else if (currentState == DateFormatMenu) - { - dateFormatIndex++; - if (dateFormatIndex > dateFormatCount - 1) - { - dateFormatIndex = 0; // Wrap around to the first menu item - } - } - else if (currentState == WeekdayMenu) - { + break; + case TimeFormatMenu: + timeFormatIndex = (timeFormatIndex + 1) % timeFormatCount; + break; + case DateFormatMenu: + dateFormatIndex = (dateFormatIndex + 1) % dateFormatCount; + break; + case Appmenu: + appsIndex = (appsIndex + 1) % appsCount; + break; + case WeekdayMenu: START_ON_MONDAY = !START_ON_MONDAY; - } - else if (currentState == TempMenu) - { + break; + case TempMenu: IS_CELSIUS = !IS_CELSIUS; + break; + default: + break; } } void MenuManager_::leftButton() { if (!inMenu) + { return; - if (currentState == MainMenu) - { - menuIndex--; - if (menuIndex < 0) - { - menuIndex = menuItemCount - 1; // Wrap around to the last menu item - } } - else if (currentState == BrightnessMenu) + switch (currentState) { + case MainMenu: + menuIndex = (menuIndex == 0) ? menuItemCount - 1 : menuIndex - 1; + break; + case BrightnessMenu: if (!AUTO_BRIGHTNESS) { - --BRIGHTNESS_PERCENT; - if (BRIGHTNESS_PERCENT < 1) - BRIGHTNESS_PERCENT = 100; + BRIGHTNESS_PERCENT = (BRIGHTNESS_PERCENT == 1) ? 100 : BRIGHTNESS_PERCENT - 1; BRIGHTNESS = map(BRIGHTNESS_PERCENT, 0, 100, 0, 255); DisplayManager.setBrightness(BRIGHTNESS); } - } - else if (currentState == FPSMenu) - { + break; + case FPSMenu: if (MATRIX_FPS > 15) - --MATRIX_FPS; - } - else if (currentState == ColorMenu) - { - int arraySize = sizeof(textColors) / sizeof(textColors[0]); - currentColor = (currentColor - 1 + arraySize) % arraySize; - } - else if (currentState == SwitchMenu) - { + { + MATRIX_FPS--; + } + break; + case ColorMenu: + currentColor = (currentColor + sizeof(textColors) / sizeof(textColors[0]) - 1) % (sizeof(textColors) / sizeof(textColors[0])); + break; + case SwitchMenu: AUTO_TRANSITION = !AUTO_TRANSITION; - } - else if (currentState == TspeedMenu) - { + break; + case TspeedMenu: TIME_PER_TRANSITION = max(200, TIME_PER_TRANSITION - 100); - } - else if (currentState == AppTimeMenu) - { + break; + case AppTimeMenu: TIME_PER_APP = max(1000, TIME_PER_APP - 1000); - } - else if (currentState == TimeFormatMenu) - { - timeFormatIndex--; - if (timeFormatIndex < 0) - { - timeFormatIndex = timeFormatCount - 1; - } - } - else if (currentState == DateFormatMenu) - { - dateFormatIndex--; - if (dateFormatIndex < 0) - { - dateFormatIndex = dateFormatCount - 1; - } - } - else if (currentState == WeekdayMenu) - { + break; + case TimeFormatMenu: + timeFormatIndex = (timeFormatIndex == 0) ? timeFormatCount - 1 : timeFormatIndex - 1; + break; + case DateFormatMenu: + dateFormatIndex = (dateFormatIndex == 0) ? dateFormatCount - 1 : dateFormatIndex - 1; + break; + case Appmenu: + appsIndex = (appsIndex == 0) ? appsCount - 1 : appsIndex - 1; + break; + case WeekdayMenu: START_ON_MONDAY = !START_ON_MONDAY; - } - else if (currentState == TempMenu) - { + break; + case TempMenu: IS_CELSIUS = !IS_CELSIUS; + break; + default: + break; } } void MenuManager_::selectButton() { if (!inMenu) - return; - if (currentState == MainMenu) { - if (menuIndex == 0) // BRIGHT + return; + } + switch (currentState) + { + case MainMenu: + switch (menuIndex) { + case 0: BRIGHTNESS_PERCENT = map(BRIGHTNESS, 0, 255, 0, 100); currentState = BrightnessMenu; - } - else if (menuIndex == 1) // RESET - { + break; + case 1: currentState = FPSMenu; - } - else if (menuIndex == 2) // COLOR - { + break; + case 2: currentState = ColorMenu; - } - else if (menuIndex == 3) // COLOR - { + break; + case 3: currentState = SwitchMenu; - } - else if (menuIndex == 4) // TSPEED - { + break; + case 4: currentState = TspeedMenu; - } - else if (menuIndex == 5) // AppTIme - { + break; + case 5: currentState = AppTimeMenu; - } - else if (menuIndex == 6) // Time - { + break; + case 6: currentState = TimeFormatMenu; - } - else if (menuIndex == 7) // date - { + break; + case 7: currentState = DateFormatMenu; - } - else if (menuIndex == 8) // weekday - { + break; + case 8: currentState = WeekdayMenu; - } - else if (menuIndex == 9) // temp - { + break; + case 9: currentState = TempMenu; - } - else if (menuIndex == 10) // Updater - { + break; + case 10: + currentState = Appmenu; + break; + case 11: if (FirmwareVersionCheck()) + { updateFirmware(); + } + break; + default: + break; } - } - else if (currentState == BrightnessMenu) - { + break; + case BrightnessMenu: AUTO_BRIGHTNESS = !AUTO_BRIGHTNESS; if (!AUTO_BRIGHTNESS) { BRIGHTNESS = map(BRIGHTNESS_PERCENT, 0, 100, 0, 255); DisplayManager.setBrightness(BRIGHTNESS); } + break; + case Appmenu: + switch (appsIndex) + { + case 0: + SHOW_TIME = !SHOW_TIME; + break; + case 1: + SHOW_DATE = !SHOW_DATE; + break; + case 2: + SHOW_TEMP = !SHOW_TEMP; + break; + case 3: + SHOW_HUM = !SHOW_HUM; + break; + case 4: + SHOW_BAT = !SHOW_BAT; + break; + default: + break; + } + break; + default: + break; } } @@ -374,57 +370,47 @@ void MenuManager_::selectButtonLong() { if (inMenu) { - if (currentState == BrightnessMenu) + switch (currentState) { + case BrightnessMenu: BRIGHTNESS = map(BRIGHTNESS_PERCENT, 0, 100, 0, 255); saveSettings(); - } - else if (currentState == FPSMenu) - { + break; + case FPSMenu: DisplayManager.setFPS(MATRIX_FPS); saveSettings(); - } - else if (currentState == ColorMenu) - { + break; + case ColorMenu: TEXTCOLOR_565 = textColors[currentColor]; saveSettings(); - } - else if (currentState == MainMenu) - { + break; + case MainMenu: inMenu = false; - } - else if (currentState == SwitchMenu) - { + break; + case SwitchMenu: DisplayManager.setAutoTransition(AUTO_TRANSITION); saveSettings(); - } - else if (currentState == TspeedMenu) - { + break; + case TspeedMenu: + case AppTimeMenu: DisplayManager.applyAllSettings(); saveSettings(); - } - else if (currentState == AppTimeMenu) - { - DisplayManager.applyAllSettings(); - saveSettings(); - } - else if (currentState == TimeFormatMenu) - { + break; + case TimeFormatMenu: TIME_FORMAT = timeFormat[timeFormatIndex]; saveSettings(); - } - else if (currentState == DateFormatMenu) - { - DATE_FORMAT = dateFormat[dateFormatIndex]; + break; + case DateFormatMenu: + case WeekdayMenu: + case TempMenu: saveSettings(); - } - else if (currentState == WeekdayMenu) - { - saveSettings(); - } - else if (currentState == TempMenu) - { + break; + case Appmenu: + DisplayManager.loadNativeApps(); saveSettings(); + break; + default: + break; } currentState = MainMenu; } @@ -432,4 +418,4 @@ void MenuManager_::selectButtonLong() { inMenu = true; } -} \ No newline at end of file +} diff --git a/src/ServerManager.cpp b/src/ServerManager.cpp index 562f1f4..fa4d178 100644 --- a/src/ServerManager.cpp +++ b/src/ServerManager.cpp @@ -84,8 +84,6 @@ void ServerManager_::setup() mws.addOption("Prefix", MQTT_PREFIX); mws.addOption("Homeassistant Discovery", HA_DISCOVERY); mws.addOptionBox("Time"); - mws.addOption("Show seconds", SHOW_SECONDS); - mws.addOption("Show weekday", SHOW_WEEKDAY); mws.addOption("NTP Server", NTP_SERVER); mws.addOption("Timezone", NTP_TZ); mws.addHTML("

Find your timezone at posix_tz_db.

", "tz_link"); @@ -95,10 +93,6 @@ void ServerManager_::setup() mws.addJavascript(custom_script); mws.addOptionBox("General"); mws.addOption("Uppercase letters", UPPERCASE_LETTERS); - mws.addOption("Show date", SHOW_DATE); - mws.addOption("Show temperature", SHOW_TEMP); - mws.addOption("Show humidity", SHOW_HUM); - mws.addOption("Show battery", SHOW_BATTERY); mws.addHandler("/save", HTTP_GET, saveHandler); } @@ -199,12 +193,6 @@ void ServerManager_::loadSettings() NET_PDNS = doc["Primary DNS"].as(); NET_SDNS = doc["Secondary DNS"].as(); UPPERCASE_LETTERS = doc["Uppercase letters"]; - SHOW_SECONDS = doc["Show seconds"]; - SHOW_WEEKDAY = doc["Show weekday"]; - SHOW_DATE = doc["Show date"]; - SHOW_TEMP = doc["Show temperature"]; - SHOW_HUM = doc["Show humidity"]; - SHOW_BATTERY = doc["Show battery"]; file.close(); DisplayManager.applyAllSettings(); Serial.println(F("Configuration loaded")); diff --git a/src/icons.cpp b/src/icons.cpp new file mode 100644 index 0000000..8cbb117 --- /dev/null +++ b/src/icons.cpp @@ -0,0 +1,2392 @@ +#include "icons.h" + +const uint16_t *get_icon(uint16_t id) +{ + switch (id) + { + case 4: + return icon_4; + case 5: + return icon_5; + case 6: + return icon_6; + case 7: + return icon_7; + case 8: + return icon_8; + case 9: + return icon_9; + case 10: + return icon_10; + case 11: + return icon_11; + case 12: + return icon_12; + case 13: + return icon_13; + case 14: + return icon_14; + case 15: + return icon_15; + case 16: + return icon_16; + case 17: + return icon_17; + case 18: + return icon_18; + case 19: + return icon_19; + case 20: + return icon_20; + case 21: + return icon_21; + case 22: + return icon_22; + case 23: + return icon_23; + case 24: + return icon_24; + case 25: + return icon_25; + case 26: + return icon_26; + case 27: + return icon_27; + case 28: + return icon_28; + case 29: + return icon_29; + case 30: + return icon_30; + case 31: + return icon_31; + case 32: + return icon_32; + case 33: + return icon_33; + case 34: + return icon_34; + case 35: + return icon_35; + case 36: + return icon_36; + case 37: + return icon_37; + case 38: + return icon_38; + case 39: + return icon_39; + case 40: + return icon_40; + case 41: + return icon_41; + case 42: + return icon_42; + case 43: + return icon_43; + case 44: + return icon_44; + case 45: + return icon_45; + case 46: + return icon_46; + case 47: + return icon_47; + case 48: + return icon_48; + case 49: + return icon_49; + case 50: + return icon_50; + case 51: + return icon_51; + case 52: + return icon_52; + case 53: + return icon_53; + case 54: + return icon_54; + case 55: + return icon_55; + case 56: + return icon_56; + case 57: + return icon_57; + case 58: + return icon_58; + case 59: + return icon_59; + case 60: + return icon_60; + case 61: + return icon_61; + case 62: + return icon_62; + case 63: + return icon_63; + case 64: + return icon_64; + case 65: + return icon_65; + case 66: + return icon_66; + case 67: + return icon_67; + case 68: + return icon_68; + case 69: + return icon_69; + case 70: + return icon_70; + case 71: + return icon_71; + case 72: + return icon_72; + case 73: + return icon_73; + case 74: + return icon_74; + case 75: + return icon_75; + case 76: + return icon_76; + case 77: + return icon_77; + case 78: + return icon_78; + case 79: + return icon_79; + case 80: + return icon_80; + case 81: + return icon_81; + case 82: + return icon_82; + case 83: + return icon_83; + case 84: + return icon_84; + case 85: + return icon_85; + case 86: + return icon_86; + case 87: + return icon_87; + case 88: + return icon_88; + case 89: + return icon_89; + case 90: + return icon_90; + case 91: + return icon_91; + case 92: + return icon_92; + case 93: + return icon_93; + case 94: + return icon_94; + case 95: + return icon_95; + case 96: + return icon_96; + case 97: + return icon_97; + case 98: + return icon_98; + case 100: + return icon_100; + case 101: + return icon_101; + case 102: + return icon_102; + case 103: + return icon_103; + case 104: + return icon_104; + case 105: + return icon_105; + case 106: + return icon_106; + case 107: + return icon_107; + case 108: + return icon_108; + case 109: + return icon_109; + case 110: + return icon_110; + case 111: + return icon_111; + case 112: + return icon_112; + case 113: + return icon_113; + case 114: + return icon_114; + case 115: + return icon_115; + case 116: + return icon_116; + case 117: + return icon_117; + case 118: + return icon_118; + case 119: + return icon_119; + case 120: + return icon_120; + case 121: + return icon_121; + case 122: + return icon_122; + case 123: + return icon_123; + case 124: + return icon_124; + case 125: + return icon_125; + case 127: + return icon_127; + case 128: + return icon_128; + case 129: + return icon_129; + case 130: + return icon_130; + case 131: + return icon_131; + case 133: + return icon_133; + case 134: + return icon_134; + case 135: + return icon_135; + case 136: + return icon_136; + case 137: + return icon_137; + case 138: + return icon_138; + case 139: + return icon_139; + case 140: + return icon_140; + case 141: + return icon_141; + case 142: + return icon_142; + case 143: + return icon_143; + case 144: + return icon_144; + case 145: + return icon_145; + case 146: + return icon_146; + case 147: + return icon_147; + case 148: + return icon_148; + case 149: + return icon_149; + case 150: + return icon_150; + case 151: + return icon_151; + case 152: + return icon_152; + case 153: + return icon_153; + case 154: + return icon_154; + case 155: + return icon_155; + case 160: + return icon_160; + case 161: + return icon_161; + case 162: + return icon_162; + case 163: + return icon_163; + case 165: + return icon_165; + case 166: + return icon_166; + case 167: + return icon_167; + case 168: + return icon_168; + case 169: + return icon_169; + case 171: + return icon_171; + case 172: + return icon_172; + case 173: + return icon_173; + case 174: + return icon_174; + case 175: + return icon_175; + case 176: + return icon_176; + case 177: + return icon_177; + case 178: + return icon_178; + case 179: + return icon_179; + case 181: + return icon_181; + case 184: + return icon_184; + case 185: + return icon_185; + case 186: + return icon_186; + case 187: + return icon_187; + case 189: + return icon_189; + case 190: + return icon_190; + case 192: + return icon_192; + case 193: + return icon_193; + case 194: + return icon_194; + case 195: + return icon_195; + case 196: + return icon_196; + case 197: + return icon_197; + case 198: + return icon_198; + case 199: + return icon_199; + case 200: + return icon_200; + case 201: + return icon_201; + case 202: + return icon_202; + case 203: + return icon_203; + case 204: + return icon_204; + case 205: + return icon_205; + case 206: + return icon_206; + case 207: + return icon_207; + case 208: + return icon_208; + case 209: + return icon_209; + case 210: + return icon_210; + case 211: + return icon_211; + case 212: + return icon_212; + case 213: + return icon_213; + case 214: + return icon_214; + case 215: + return icon_215; + case 216: + return icon_216; + case 217: + return icon_217; + case 218: + return icon_218; + case 219: + return icon_219; + case 220: + return icon_220; + case 221: + return icon_221; + case 222: + return icon_222; + case 223: + return icon_223; + case 224: + return icon_224; + case 225: + return icon_225; + case 226: + return icon_226; + case 227: + return icon_227; + case 228: + return icon_228; + case 229: + return icon_229; + case 230: + return icon_230; + case 231: + return icon_231; + case 232: + return icon_232; + case 233: + return icon_233; + case 234: + return icon_234; + case 235: + return icon_235; + case 236: + return icon_236; + case 237: + return icon_237; + case 238: + return icon_238; + case 239: + return icon_239; + case 240: + return icon_240; + case 241: + return icon_241; + case 242: + return icon_242; + case 243: + return icon_243; + case 244: + return icon_244; + case 245: + return icon_245; + case 250: + return icon_250; + case 251: + return icon_251; + case 255: + return icon_255; + case 256: + return icon_256; + case 257: + return icon_257; + case 258: + return icon_258; + case 273: + return icon_273; + case 275: + return icon_275; + case 276: + return icon_276; + case 277: + return icon_277; + case 279: + return icon_279; + case 280: + return icon_280; + case 281: + return icon_281; + case 283: + return icon_283; + case 284: + return icon_284; + case 285: + return icon_285; + case 286: + return icon_286; + case 287: + return icon_287; + case 288: + return icon_288; + case 289: + return icon_289; + case 291: + return icon_291; + case 292: + return icon_292; + case 294: + return icon_294; + case 296: + return icon_296; + case 297: + return icon_297; + case 298: + return icon_298; + case 301: + return icon_301; + case 302: + return icon_302; + case 303: + return icon_303; + case 305: + return icon_305; + case 332: + return icon_332; + case 333: + return icon_333; + case 353: + return icon_353; + case 354: + return icon_354; + case 355: + return icon_355; + case 356: + return icon_356; + case 359: + return icon_359; + case 365: + return icon_365; + case 366: + return icon_366; + case 367: + return icon_367; + case 368: + return icon_368; + case 372: + return icon_372; + case 373: + return icon_373; + case 374: + return icon_374; + case 375: + return icon_375; + case 376: + return icon_376; + case 377: + return icon_377; + case 379: + return icon_379; + case 381: + return icon_381; + case 384: + return icon_384; + case 385: + return icon_385; + case 386: + return icon_386; + case 387: + return icon_387; + case 388: + return icon_388; + case 389: + return icon_389; + case 390: + return icon_390; + case 391: + return icon_391; + case 392: + return icon_392; + case 393: + return icon_393; + case 394: + return icon_394; + case 396: + return icon_396; + case 397: + return icon_397; + case 404: + return icon_404; + case 405: + return icon_405; + case 406: + return icon_406; + case 409: + return icon_409; + case 410: + return icon_410; + case 411: + return icon_411; + case 412: + return icon_412; + case 413: + return icon_413; + case 414: + return icon_414; + case 415: + return icon_415; + case 416: + return icon_416; + case 417: + return icon_417; + case 419: + return icon_419; + case 420: + return icon_420; + case 421: + return icon_421; + case 422: + return icon_422; + case 424: + return icon_424; + case 427: + return icon_427; + case 431: + return icon_431; + case 437: + return icon_437; + case 438: + return icon_438; + case 439: + return icon_439; + case 441: + return icon_441; + case 448: + return icon_448; + case 449: + return icon_449; + case 450: + return icon_450; + case 457: + return icon_457; + case 459: + return icon_459; + case 464: + return icon_464; + case 465: + return icon_465; + case 466: + return icon_466; + case 467: + return icon_467; + case 468: + return icon_468; + case 469: + return icon_469; + case 470: + return icon_470; + case 471: + return icon_471; + case 472: + return icon_472; + case 473: + return icon_473; + case 474: + return icon_474; + case 475: + return icon_475; + case 476: + return icon_476; + case 477: + return icon_477; + case 478: + return icon_478; + case 479: + return icon_479; + case 480: + return icon_480; + case 481: + return icon_481; + case 482: + return icon_482; + case 483: + return icon_483; + case 487: + return icon_487; + case 488: + return icon_488; + case 490: + return icon_490; + case 493: + return icon_493; + case 499: + return icon_499; + case 500: + return icon_500; + case 501: + return icon_501; + case 502: + return icon_502; + case 504: + return icon_504; + case 505: + return icon_505; + case 507: + return icon_507; + case 508: + return icon_508; + case 509: + return icon_509; + case 510: + return icon_510; + case 511: + return icon_511; + case 512: + return icon_512; + case 513: + return icon_513; + case 514: + return icon_514; + case 515: + return icon_515; + case 516: + return icon_516; + case 518: + return icon_518; + case 519: + return icon_519; + case 520: + return icon_520; + case 521: + return icon_521; + case 575: + return icon_575; + case 576: + return icon_576; + case 578: + return icon_578; + case 579: + return icon_579; + case 580: + return icon_580; + case 581: + return icon_581; + case 583: + return icon_583; + case 584: + return icon_584; + case 585: + return icon_585; + case 587: + return icon_587; + case 588: + return icon_588; + case 590: + return icon_590; + case 593: + return icon_593; + case 595: + return icon_595; + case 597: + return icon_597; + case 598: + return icon_598; + case 599: + return icon_599; + case 600: + return icon_600; + case 601: + return icon_601; + case 602: + return icon_602; + case 603: + return icon_603; + case 604: + return icon_604; + case 605: + return icon_605; + case 606: + return icon_606; + case 607: + return icon_607; + case 608: + return icon_608; + case 610: + return icon_610; + case 611: + return icon_611; + case 612: + return icon_612; + case 614: + return icon_614; + case 615: + return icon_615; + case 621: + return icon_621; + case 622: + return icon_622; + case 623: + return icon_623; + case 624: + return icon_624; + case 627: + return icon_627; + case 628: + return icon_628; + case 630: + return icon_630; + case 631: + return icon_631; + case 632: + return icon_632; + case 633: + return icon_633; + case 635: + return icon_635; + case 638: + return icon_638; + case 642: + return icon_642; + case 643: + return icon_643; + case 644: + return icon_644; + case 645: + return icon_645; + case 646: + return icon_646; + case 648: + return icon_648; + case 649: + return icon_649; + case 650: + return icon_650; + case 652: + return icon_652; + case 653: + return icon_653; + case 655: + return icon_655; + case 656: + return icon_656; + case 657: + return icon_657; + case 658: + return icon_658; + case 659: + return icon_659; + case 660: + return icon_660; + case 661: + return icon_661; + case 664: + return icon_664; + case 665: + return icon_665; + case 666: + return icon_666; + case 667: + return icon_667; + case 669: + return icon_669; + case 670: + return icon_670; + case 671: + return icon_671; + case 673: + return icon_673; + case 674: + return icon_674; + case 680: + return icon_680; + case 681: + return icon_681; + case 682: + return icon_682; + case 683: + return icon_683; + case 684: + return icon_684; + case 685: + return icon_685; + case 686: + return icon_686; + case 688: + return icon_688; + case 689: + return icon_689; + case 690: + return icon_690; + case 691: + return icon_691; + case 692: + return icon_692; + case 693: + return icon_693; + case 697: + return icon_697; + case 698: + return icon_698; + case 700: + return icon_700; + case 701: + return icon_701; + case 702: + return icon_702; + case 703: + return icon_703; + case 704: + return icon_704; + case 711: + return icon_711; + case 712: + return icon_712; + case 713: + return icon_713; + case 715: + return icon_715; + case 716: + return icon_716; + case 718: + return icon_718; + case 724: + return icon_724; + case 725: + return icon_725; + case 727: + return icon_727; + case 731: + return icon_731; + case 732: + return icon_732; + case 734: + return icon_734; + case 735: + return icon_735; + case 736: + return icon_736; + case 737: + return icon_737; + case 738: + return icon_738; + case 739: + return icon_739; + case 740: + return icon_740; + case 741: + return icon_741; + case 742: + return icon_742; + case 743: + return icon_743; + case 744: + return icon_744; + case 745: + return icon_745; + case 746: + return icon_746; + case 747: + return icon_747; + case 748: + return icon_748; + case 749: + return icon_749; + case 750: + return icon_750; + case 751: + return icon_751; + case 752: + return icon_752; + case 753: + return icon_753; + case 754: + return icon_754; + case 755: + return icon_755; + case 756: + return icon_756; + case 757: + return icon_757; + case 758: + return icon_758; + case 759: + return icon_759; + case 760: + return icon_760; + case 762: + return icon_762; + case 763: + return icon_763; + case 764: + return icon_764; + case 765: + return icon_765; + case 766: + return icon_766; + case 767: + return icon_767; + case 768: + return icon_768; + case 769: + return icon_769; + case 770: + return icon_770; + case 771: + return icon_771; + case 772: + return icon_772; + case 773: + return icon_773; + case 774: + return icon_774; + case 789: + return icon_789; + case 790: + return icon_790; + case 791: + return icon_791; + case 792: + return icon_792; + case 795: + return icon_795; + case 799: + return icon_799; + case 800: + return icon_800; + case 801: + return icon_801; + case 809: + return icon_809; + case 810: + return icon_810; + case 811: + return icon_811; + case 813: + return icon_813; + case 815: + return icon_815; + case 816: + return icon_816; + case 817: + return icon_817; + case 818: + return icon_818; + case 823: + return icon_823; + case 828: + return icon_828; + case 831: + return icon_831; + case 833: + return icon_833; + case 834: + return icon_834; + case 836: + return icon_836; + case 840: + return icon_840; + case 841: + return icon_841; + case 842: + return icon_842; + case 844: + return icon_844; + case 845: + return icon_845; + case 846: + return icon_846; + case 848: + return icon_848; + case 849: + return icon_849; + case 850: + return icon_850; + case 851: + return icon_851; + case 852: + return icon_852; + case 857: + return icon_857; + case 858: + return icon_858; + case 860: + return icon_860; + case 861: + return icon_861; + case 862: + return icon_862; + case 864: + return icon_864; + case 865: + return icon_865; + case 866: + return icon_866; + case 867: + return icon_867; + case 869: + return icon_869; + case 870: + return icon_870; + case 872: + return icon_872; + case 873: + return icon_873; + case 874: + return icon_874; + case 875: + return icon_875; + case 876: + return icon_876; + case 877: + return icon_877; + case 878: + return icon_878; + case 879: + return icon_879; + case 881: + return icon_881; + case 883: + return icon_883; + case 885: + return icon_885; + case 886: + return icon_886; + case 887: + return icon_887; + case 889: + return icon_889; + case 890: + return icon_890; + case 891: + return icon_891; + case 892: + return icon_892; + case 893: + return icon_893; + case 894: + return icon_894; + case 895: + return icon_895; + case 896: + return icon_896; + case 897: + return icon_897; + case 898: + return icon_898; + case 900: + return icon_900; + case 901: + return icon_901; + case 902: + return icon_902; + case 903: + return icon_903; + case 904: + return icon_904; + case 905: + return icon_905; + case 907: + return icon_907; + case 911: + return icon_911; + case 912: + return icon_912; + case 913: + return icon_913; + case 914: + return icon_914; + case 918: + return icon_918; + case 919: + return icon_919; + case 920: + return icon_920; + case 921: + return icon_921; + case 924: + return icon_924; + case 925: + return icon_925; + case 926: + return icon_926; + case 927: + return icon_927; + case 928: + return icon_928; + case 929: + return icon_929; + case 930: + return icon_930; + case 931: + return icon_931; + case 932: + return icon_932; + case 934: + return icon_934; + case 938: + return icon_938; + case 939: + return icon_939; + case 940: + return icon_940; + case 941: + return icon_941; + case 942: + return icon_942; + case 943: + return icon_943; + case 947: + return icon_947; + case 948: + return icon_948; + case 952: + return icon_952; + case 953: + return icon_953; + case 954: + return icon_954; + case 962: + return icon_962; + case 964: + return icon_964; + case 966: + return icon_966; + case 967: + return icon_967; + case 969: + return icon_969; + case 970: + return icon_970; + case 974: + return icon_974; + case 977: + return icon_977; + case 980: + return icon_980; + case 981: + return icon_981; + case 982: + return icon_982; + case 983: + return icon_983; + case 984: + return icon_984; + case 985: + return icon_985; + case 986: + return icon_986; + case 987: + return icon_987; + case 988: + return icon_988; + case 989: + return icon_989; + case 990: + return icon_990; + case 991: + return icon_991; + case 994: + return icon_994; + case 995: + return icon_995; + case 996: + return icon_996; + case 997: + return icon_997; + case 998: + return icon_998; + case 999: + return icon_999; + case 1000: + return icon_1000; + case 1003: + return icon_1003; + case 1004: + return icon_1004; + case 1005: + return icon_1005; + case 1006: + return icon_1006; + case 1007: + return icon_1007; + case 1008: + return icon_1008; + case 1009: + return icon_1009; + case 1010: + return icon_1010; + case 1011: + return icon_1011; + case 1012: + return icon_1012; + case 1013: + return icon_1013; + case 1015: + return icon_1015; + case 1020: + return icon_1020; + case 1022: + return icon_1022; + case 1023: + return icon_1023; + case 1025: + return icon_1025; + case 1026: + return icon_1026; + case 1027: + return icon_1027; + case 1028: + return icon_1028; + case 1029: + return icon_1029; + case 1030: + return icon_1030; + case 1031: + return icon_1031; + case 1032: + return icon_1032; + case 1033: + return icon_1033; + case 1034: + return icon_1034; + case 1035: + return icon_1035; + case 1036: + return icon_1036; + case 1037: + return icon_1037; + case 1047: + return icon_1047; + case 1050: + return icon_1050; + case 1052: + return icon_1052; + case 1054: + return icon_1054; + case 1055: + return icon_1055; + case 1056: + return icon_1056; + case 1060: + return icon_1060; + case 1061: + return icon_1061; + case 1062: + return icon_1062; + case 1066: + return icon_1066; + case 1067: + return icon_1067; + case 1068: + return icon_1068; + case 1078: + return icon_1078; + case 1084: + return icon_1084; + case 1085: + return icon_1085; + case 1086: + return icon_1086; + case 1087: + return icon_1087; + case 1088: + return icon_1088; + case 1089: + return icon_1089; + case 1090: + return icon_1090; + case 1091: + return icon_1091; + case 1092: + return icon_1092; + case 1093: + return icon_1093; + case 1094: + return icon_1094; + case 1095: + return icon_1095; + case 1096: + return icon_1096; + case 1097: + return icon_1097; + case 1098: + return icon_1098; + case 1099: + return icon_1099; + case 1100: + return icon_1100; + case 1103: + return icon_1103; + case 1104: + return icon_1104; + case 1105: + return icon_1105; + case 1106: + return icon_1106; + case 1107: + return icon_1107; + case 1108: + return icon_1108; + case 1111: + return icon_1111; + case 1112: + return icon_1112; + case 1113: + return icon_1113; + case 1114: + return icon_1114; + case 1117: + return icon_1117; + case 1118: + return icon_1118; + case 1121: + return icon_1121; + case 1125: + return icon_1125; + case 1129: + return icon_1129; + case 1132: + return icon_1132; + case 1133: + return icon_1133; + case 1134: + return icon_1134; + case 1135: + return icon_1135; + case 1138: + return icon_1138; + case 1139: + return icon_1139; + case 1141: + return icon_1141; + case 1142: + return icon_1142; + case 1148: + return icon_1148; + case 1157: + return icon_1157; + case 1158: + return icon_1158; + case 1159: + return icon_1159; + case 1160: + return icon_1160; + case 1161: + return icon_1161; + case 1166: + return icon_1166; + case 1170: + return icon_1170; + case 1171: + return icon_1171; + case 1172: + return icon_1172; + case 1174: + return icon_1174; + case 1180: + return icon_1180; + case 1183: + return icon_1183; + case 1185: + return icon_1185; + case 1187: + return icon_1187; + case 1188: + return icon_1188; + case 1189: + return icon_1189; + case 1191: + return icon_1191; + case 1192: + return icon_1192; + case 1193: + return icon_1193; + case 1194: + return icon_1194; + case 1195: + return icon_1195; + case 1197: + return icon_1197; + case 1200: + return icon_1200; + case 1202: + return icon_1202; + case 1212: + return icon_1212; + case 1213: + return icon_1213; + case 1214: + return icon_1214; + case 1217: + return icon_1217; + case 1218: + return icon_1218; + case 1222: + return icon_1222; + case 1223: + return icon_1223; + case 1228: + return icon_1228; + case 1233: + return icon_1233; + case 1241: + return icon_1241; + case 1242: + return icon_1242; + case 1243: + return icon_1243; + case 1245: + return icon_1245; + case 1247: + return icon_1247; + case 1253: + return icon_1253; + case 1254: + return icon_1254; + case 1256: + return icon_1256; + case 1259: + return icon_1259; + case 1260: + return icon_1260; + case 1263: + return icon_1263; + case 1265: + return icon_1265; + case 1268: + return icon_1268; + case 1270: + return icon_1270; + case 1273: + return icon_1273; + case 1275: + return icon_1275; + case 1279: + return icon_1279; + case 1280: + return icon_1280; + case 1282: + return icon_1282; + case 1288: + return icon_1288; + case 1289: + return icon_1289; + case 1293: + return icon_1293; + case 1294: + return icon_1294; + case 1295: + return icon_1295; + case 1296: + return icon_1296; + case 1297: + return icon_1297; + case 1298: + return icon_1298; + case 1300: + return icon_1300; + case 1306: + return icon_1306; + case 1308: + return icon_1308; + case 1310: + return icon_1310; + case 1313: + return icon_1313; + case 1314: + return icon_1314; + case 1315: + return icon_1315; + case 1316: + return icon_1316; + case 1317: + return icon_1317; + case 1318: + return icon_1318; + case 1319: + return icon_1319; + case 1320: + return icon_1320; + case 1321: + return icon_1321; + case 1331: + return icon_1331; + case 1332: + return icon_1332; + case 1333: + return icon_1333; + case 1335: + return icon_1335; + case 1340: + return icon_1340; + case 1341: + return icon_1341; + case 1351: + return icon_1351; + case 1352: + return icon_1352; + case 1353: + return icon_1353; + case 1355: + return icon_1355; + case 1356: + return icon_1356; + case 1357: + return icon_1357; + case 1364: + return icon_1364; + case 1367: + return icon_1367; + case 1368: + return icon_1368; + case 1370: + return icon_1370; + case 1374: + return icon_1374; + case 1375: + return icon_1375; + case 1376: + return icon_1376; + case 1377: + return icon_1377; + case 1378: + return icon_1378; + case 1379: + return icon_1379; + case 1380: + return icon_1380; + case 1383: + return icon_1383; + case 1386: + return icon_1386; + case 1390: + return icon_1390; + case 1391: + return icon_1391; + case 1392: + return icon_1392; + case 1395: + return icon_1395; + case 1397: + return icon_1397; + case 1398: + return icon_1398; + case 1399: + return icon_1399; + case 1400: + return icon_1400; + case 1402: + return icon_1402; + case 1404: + return icon_1404; + case 1405: + return icon_1405; + case 1406: + return icon_1406; + case 1407: + return icon_1407; + case 1408: + return icon_1408; + case 1411: + return icon_1411; + case 1413: + return icon_1413; + case 1418: + return icon_1418; + case 1419: + return icon_1419; + case 1420: + return icon_1420; + case 1421: + return icon_1421; + case 1422: + return icon_1422; + case 1423: + return icon_1423; + case 1424: + return icon_1424; + case 1425: + return icon_1425; + case 1427: + return icon_1427; + case 1433: + return icon_1433; + case 1435: + return icon_1435; + case 1437: + return icon_1437; + case 1440: + return icon_1440; + case 1441: + return icon_1441; + case 1442: + return icon_1442; + case 1443: + return icon_1443; + case 1444: + return icon_1444; + case 1445: + return icon_1445; + case 1446: + return icon_1446; + case 1447: + return icon_1447; + case 1448: + return icon_1448; + case 1449: + return icon_1449; + case 1452: + return icon_1452; + case 1455: + return icon_1455; + case 1456: + return icon_1456; + case 1457: + return icon_1457; + case 1459: + return icon_1459; + case 1461: + return icon_1461; + case 1462: + return icon_1462; + case 1463: + return icon_1463; + case 1465: + return icon_1465; + case 1469: + return icon_1469; + case 1471: + return icon_1471; + case 1472: + return icon_1472; + case 1474: + return icon_1474; + case 1475: + return icon_1475; + case 1482: + return icon_1482; + case 1485: + return icon_1485; + case 1486: + return icon_1486; + case 1487: + return icon_1487; + case 1488: + return icon_1488; + case 1490: + return icon_1490; + case 1492: + return icon_1492; + case 1495: + return icon_1495; + case 1496: + return icon_1496; + case 1497: + return icon_1497; + case 1498: + return icon_1498; + case 1499: + return icon_1499; + case 1501: + return icon_1501; + case 1502: + return icon_1502; + case 1506: + return icon_1506; + case 1507: + return icon_1507; + case 1508: + return icon_1508; + case 1509: + return icon_1509; + case 1513: + return icon_1513; + case 1515: + return icon_1515; + case 1516: + return icon_1516; + case 1517: + return icon_1517; + case 1518: + return icon_1518; + case 1519: + return icon_1519; + case 1522: + return icon_1522; + case 1525: + return icon_1525; + case 1531: + return icon_1531; + case 1533: + return icon_1533; + case 1534: + return icon_1534; + case 1538: + return icon_1538; + case 1539: + return icon_1539; + case 1540: + return icon_1540; + case 1541: + return icon_1541; + case 1543: + return icon_1543; + case 1544: + return icon_1544; + case 1546: + return icon_1546; + case 1547: + return icon_1547; + case 1548: + return icon_1548; + case 1549: + return icon_1549; + case 1550: + return icon_1550; + case 1552: + return icon_1552; + case 1556: + return icon_1556; + case 1557: + return icon_1557; + case 1559: + return icon_1559; + case 1561: + return icon_1561; + case 1562: + return icon_1562; + case 1563: + return icon_1563; + case 1564: + return icon_1564; + case 1567: + return icon_1567; + case 1571: + return icon_1571; + case 1574: + return icon_1574; + case 1575: + return icon_1575; + case 1576: + return icon_1576; + case 1577: + return icon_1577; + case 1578: + return icon_1578; + case 1585: + return icon_1585; + case 1587: + return icon_1587; + case 1588: + return icon_1588; + case 1589: + return icon_1589; + case 1590: + return icon_1590; + case 1591: + return icon_1591; + case 1592: + return icon_1592; + case 1593: + return icon_1593; + case 1595: + return icon_1595; + case 1596: + return icon_1596; + case 1597: + return icon_1597; + case 1598: + return icon_1598; + case 1601: + return icon_1601; + case 1602: + return icon_1602; + case 1603: + return icon_1603; + case 1604: + return icon_1604; + case 1612: + return icon_1612; + case 1628: + return icon_1628; + case 1629: + return icon_1629; + case 1630: + return icon_1630; + case 1633: + return icon_1633; + case 1634: + return icon_1634; + case 1635: + return icon_1635; + case 1637: + return icon_1637; + case 1638: + return icon_1638; + case 1639: + return icon_1639; + case 1640: + return icon_1640; + case 1642: + return icon_1642; + case 1643: + return icon_1643; + case 1644: + return icon_1644; + case 1645: + return icon_1645; + case 1646: + return icon_1646; + case 1647: + return icon_1647; + case 1648: + return icon_1648; + case 1649: + return icon_1649; + case 1651: + return icon_1651; + case 1652: + return icon_1652; + case 1654: + return icon_1654; + case 1655: + return icon_1655; + case 1658: + return icon_1658; + case 1661: + return icon_1661; + case 1662: + return icon_1662; + case 1663: + return icon_1663; + case 1664: + return icon_1664; + case 1665: + return icon_1665; + case 1666: + return icon_1666; + case 1667: + return icon_1667; + case 1668: + return icon_1668; + case 1669: + return icon_1669; + case 1670: + return icon_1670; + case 1671: + return icon_1671; + case 1672: + return icon_1672; + case 1673: + return icon_1673; + case 1674: + return icon_1674; + case 1675: + return icon_1675; + case 1676: + return icon_1676; + case 1677: + return icon_1677; + case 1678: + return icon_1678; + case 1679: + return icon_1679; + case 1680: + return icon_1680; + case 1681: + return icon_1681; + case 1682: + return icon_1682; + case 1683: + return icon_1683; + case 1684: + return icon_1684; + case 1685: + return icon_1685; + case 1686: + return icon_1686; + case 1687: + return icon_1687; + case 1688: + return icon_1688; + case 1689: + return icon_1689; + case 1690: + return icon_1690; + case 1693: + return icon_1693; + case 1694: + return icon_1694; + case 1697: + return icon_1697; + case 1699: + return icon_1699; + case 1700: + return icon_1700; + case 1701: + return icon_1701; + case 1702: + return icon_1702; + case 1711: + return icon_1711; + case 1713: + return icon_1713; + case 1714: + return icon_1714; + case 1717: + return icon_1717; + case 1718: + return icon_1718; + case 1724: + return icon_1724; + case 1725: + return icon_1725; + case 1726: + return icon_1726; + case 1727: + return icon_1727; + case 1728: + return icon_1728; + case 1729: + return icon_1729; + case 1738: + return icon_1738; + case 1739: + return icon_1739; + case 1740: + return icon_1740; + case 1745: + return icon_1745; + case 1746: + return icon_1746; + case 1753: + return icon_1753; + case 1754: + return icon_1754; + case 1755: + return icon_1755; + case 1756: + return icon_1756; + case 1757: + return icon_1757; + case 1760: + return icon_1760; + case 1761: + return icon_1761; + case 1762: + return icon_1762; + case 1763: + return icon_1763; + case 1764: + return icon_1764; + case 1765: + return icon_1765; + case 1766: + return icon_1766; + case 1767: + return icon_1767; + case 1768: + return icon_1768; + case 1770: + return icon_1770; + case 1771: + return icon_1771; + case 1772: + return icon_1772; + case 1773: + return icon_1773; + case 1774: + return icon_1774; + case 1775: + return icon_1775; + case 1776: + return icon_1776; + case 1777: + return icon_1777; + case 1779: + return icon_1779; + case 1780: + return icon_1780; + case 1781: + return icon_1781; + case 1782: + return icon_1782; + case 1783: + return icon_1783; + case 1786: + return icon_1786; + case 1787: + return icon_1787; + case 1788: + return icon_1788; + case 1789: + return icon_1789; + case 1790: + return icon_1790; + case 1791: + return icon_1791; + case 1792: + return icon_1792; + case 1793: + return icon_1793; + case 1794: + return icon_1794; + case 1795: + return icon_1795; + case 1799: + return icon_1799; + case 1800: + return icon_1800; + case 1801: + return icon_1801; + case 1802: + return icon_1802; + case 1803: + return icon_1803; + case 1804: + return icon_1804; + case 1805: + return icon_1805; + case 1806: + return icon_1806; + case 1807: + return icon_1807; + case 1808: + return icon_1808; + case 1809: + return icon_1809; + case 1810: + return icon_1810; + case 1811: + return icon_1811; + case 1812: + return icon_1812; + case 1813: + return icon_1813; + case 1814: + return icon_1814; + case 1815: + return icon_1815; + case 1816: + return icon_1816; + case 1817: + return icon_1817; + case 1818: + return icon_1818; + case 1819: + return icon_1819; + case 1820: + return icon_1820; + case 1821: + return icon_1821; + case 1822: + return icon_1822; + case 1823: + return icon_1823; + case 1824: + return icon_1824; + case 1825: + return icon_1825; + case 1826: + return icon_1826; + case 1835: + return icon_1835; + case 1836: + return icon_1836; + case 1838: + return icon_1838; + case 1839: + return icon_1839; + case 1851: + return icon_1851; + case 1852: + return icon_1852; + case 1861: + return icon_1861; + case 1867: + return icon_1867; + case 1875: + return icon_1875; + case 1876: + return icon_1876; + case 1878: + return icon_1878; + case 1885: + return icon_1885; + case 1888: + return icon_1888; + case 1892: + return icon_1892; + case 1894: + return icon_1894; + case 1903: + return icon_1903; + case 1911: + return icon_1911; + case 1913: + return icon_1913; + case 1923: + return icon_1923; + case 1931: + return icon_1931; + case 1933: + return icon_1933; + case 1934: + return icon_1934; + case 1935: + return icon_1935; + case 1936: + return icon_1936; + case 1937: + return icon_1937; + case 1938: + return icon_1938; + case 1950: + return icon_1950; + case 1951: + return icon_1951; + case 1952: + return icon_1952; + case 1956: + return icon_1956; + case 1957: + return icon_1957; + case 1966: + return icon_1966; + case 1969: + return icon_1969; + case 1971: + return icon_1971; + case 1976: + return icon_1976; + case 1977: + return icon_1977; + case 1978: + return icon_1978; + case 1979: + return icon_1979; + case 1980: + return icon_1980; + case 1981: + return icon_1981; + case 1982: + return icon_1982; + case 1983: + return icon_1983; + case 1988: + return icon_1988; + case 1989: + return icon_1989; + case 1990: + return icon_1990; + case 1991: + return icon_1991; + case 1992: + return icon_1992; + case 1993: + return icon_1993; + case 1994: + return icon_1994; + case 1995: + return icon_1995; + case 1996: + return icon_1996; + case 1997: + return icon_1997; + case 1998: + return icon_1998; + case 1999: + return icon_1999; + case 2000: + return icon_2000; + case 2001: + return icon_2001; + case 2002: + return icon_2002; + case 2003: + return icon_2003; + case 2007: + return icon_2007; + case 2008: + return icon_2008; + case 2009: + return icon_2009; + case 2010: + return icon_2010; + case 2011: + return icon_2011; + case 2012: + return icon_2012; + case 2013: + return icon_2013; + case 2018: + return icon_2018; + case 2025: + return icon_2025; + case 2032: + return icon_2032; + case 2033: + return icon_2033; + case 2034: + return icon_2034; + case 2035: + return icon_2035; + case 2036: + return icon_2036; + case 2038: + return icon_2038; + case 2039: + return icon_2039; + case 2042: + return icon_2042; + case 2043: + return icon_2043; + case 2044: + return icon_2044; + case 2045: + return icon_2045; + case 2046: + return icon_2046; + case 2047: + return icon_2047; + case 2048: + return icon_2048; + case 2049: + return icon_2049; + case 2050: + return icon_2050; + case 2053: + return icon_2053; + case 2055: + return icon_2055; + case 2056: + return icon_2056; + case 2057: + return icon_2057; + case 2058: + return icon_2058; + case 2059: + return icon_2059; + case 2060: + return icon_2060; + case 2061: + return icon_2061; + case 2062: + return icon_2062; + case 2063: + return icon_2063; + case 2064: + return icon_2064; + case 2065: + return icon_2065; + case 2066: + return icon_2066; + case 2067: + return icon_2067; + case 2068: + return icon_2068; + case 2070: + return icon_2070; + case 2073: + return icon_2073; + case 2074: + return icon_2074; + case 2075: + return icon_2075; + case 2076: + return icon_2076; + case 2077: + return icon_2077; + case 2078: + return icon_2078; + case 2079: + return icon_2079; + case 2080: + return icon_2080; + case 2081: + return icon_2081; + case 2082: + return icon_2082; + case 2084: + return icon_2084; + case 2086: + return icon_2086; + case 2089: + return icon_2089; + case 2090: + return icon_2090; + case 2091: + return icon_2091; + default: + return icon_22; + } +} \ No newline at end of file diff --git a/src/icons.h b/src/icons.h index 1c4c943..058e83b 100644 --- a/src/icons.h +++ b/src/icons.h @@ -1209,2395 +1209,6 @@ const uint16_t icon_2089[] = {2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 65 const uint16_t icon_2090[] = {53313, 53313, 55718, 55718, 55718, 55718, 55718, 53378, 53313, 53378, 65438, 65535, 65535, 65535, 65275, 53573, 53313, 53313, 53443, 53443, 53443, 53443, 53410, 53313, 53313, 60562, 65535, 65535, 65535, 65535, 60562, 53313, 53573, 65243, 65535, 63065, 55946, 55946, 55718, 53313, 55718, 65535, 65535, 53280, 53313, 53313, 53313, 53313, 55718, 65535, 65535, 53313, 53313, 53313, 53313, 53313, 53378, 55718, 55718, 53313, 53313, 53313, 53313, 53313}; const uint16_t icon_2091[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20319, 20319, 20319, 0, 0, 0, 0, 0, 20319, 20319, 20319, 20319, 20319, 20319, 20319, 20319, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 33476, 33476, 33476, 33476, 33476, 33476, 33476, 33476, 0, 33476, 0, 0, 0, 0, 33476, 0, 0, 0, 0, 0, 0, 0, 0, 0}; -const uint16_t *get_icon(uint16_t id) -{ - switch (id) - { - case 4: - return icon_4; - case 5: - return icon_5; - case 6: - return icon_6; - case 7: - return icon_7; - case 8: - return icon_8; - case 9: - return icon_9; - case 10: - return icon_10; - case 11: - return icon_11; - case 12: - return icon_12; - case 13: - return icon_13; - case 14: - return icon_14; - case 15: - return icon_15; - case 16: - return icon_16; - case 17: - return icon_17; - case 18: - return icon_18; - case 19: - return icon_19; - case 20: - return icon_20; - case 21: - return icon_21; - case 22: - return icon_22; - case 23: - return icon_23; - case 24: - return icon_24; - case 25: - return icon_25; - case 26: - return icon_26; - case 27: - return icon_27; - case 28: - return icon_28; - case 29: - return icon_29; - case 30: - return icon_30; - case 31: - return icon_31; - case 32: - return icon_32; - case 33: - return icon_33; - case 34: - return icon_34; - case 35: - return icon_35; - case 36: - return icon_36; - case 37: - return icon_37; - case 38: - return icon_38; - case 39: - return icon_39; - case 40: - return icon_40; - case 41: - return icon_41; - case 42: - return icon_42; - case 43: - return icon_43; - case 44: - return icon_44; - case 45: - return icon_45; - case 46: - return icon_46; - case 47: - return icon_47; - case 48: - return icon_48; - case 49: - return icon_49; - case 50: - return icon_50; - case 51: - return icon_51; - case 52: - return icon_52; - case 53: - return icon_53; - case 54: - return icon_54; - case 55: - return icon_55; - case 56: - return icon_56; - case 57: - return icon_57; - case 58: - return icon_58; - case 59: - return icon_59; - case 60: - return icon_60; - case 61: - return icon_61; - case 62: - return icon_62; - case 63: - return icon_63; - case 64: - return icon_64; - case 65: - return icon_65; - case 66: - return icon_66; - case 67: - return icon_67; - case 68: - return icon_68; - case 69: - return icon_69; - case 70: - return icon_70; - case 71: - return icon_71; - case 72: - return icon_72; - case 73: - return icon_73; - case 74: - return icon_74; - case 75: - return icon_75; - case 76: - return icon_76; - case 77: - return icon_77; - case 78: - return icon_78; - case 79: - return icon_79; - case 80: - return icon_80; - case 81: - return icon_81; - case 82: - return icon_82; - case 83: - return icon_83; - case 84: - return icon_84; - case 85: - return icon_85; - case 86: - return icon_86; - case 87: - return icon_87; - case 88: - return icon_88; - case 89: - return icon_89; - case 90: - return icon_90; - case 91: - return icon_91; - case 92: - return icon_92; - case 93: - return icon_93; - case 94: - return icon_94; - case 95: - return icon_95; - case 96: - return icon_96; - case 97: - return icon_97; - case 98: - return icon_98; - case 100: - return icon_100; - case 101: - return icon_101; - case 102: - return icon_102; - case 103: - return icon_103; - case 104: - return icon_104; - case 105: - return icon_105; - case 106: - return icon_106; - case 107: - return icon_107; - case 108: - return icon_108; - case 109: - return icon_109; - case 110: - return icon_110; - case 111: - return icon_111; - case 112: - return icon_112; - case 113: - return icon_113; - case 114: - return icon_114; - case 115: - return icon_115; - case 116: - return icon_116; - case 117: - return icon_117; - case 118: - return icon_118; - case 119: - return icon_119; - case 120: - return icon_120; - case 121: - return icon_121; - case 122: - return icon_122; - case 123: - return icon_123; - case 124: - return icon_124; - case 125: - return icon_125; - case 127: - return icon_127; - case 128: - return icon_128; - case 129: - return icon_129; - case 130: - return icon_130; - case 131: - return icon_131; - case 133: - return icon_133; - case 134: - return icon_134; - case 135: - return icon_135; - case 136: - return icon_136; - case 137: - return icon_137; - case 138: - return icon_138; - case 139: - return icon_139; - case 140: - return icon_140; - case 141: - return icon_141; - case 142: - return icon_142; - case 143: - return icon_143; - case 144: - return icon_144; - case 145: - return icon_145; - case 146: - return icon_146; - case 147: - return icon_147; - case 148: - return icon_148; - case 149: - return icon_149; - case 150: - return icon_150; - case 151: - return icon_151; - case 152: - return icon_152; - case 153: - return icon_153; - case 154: - return icon_154; - case 155: - return icon_155; - case 160: - return icon_160; - case 161: - return icon_161; - case 162: - return icon_162; - case 163: - return icon_163; - case 165: - return icon_165; - case 166: - return icon_166; - case 167: - return icon_167; - case 168: - return icon_168; - case 169: - return icon_169; - case 171: - return icon_171; - case 172: - return icon_172; - case 173: - return icon_173; - case 174: - return icon_174; - case 175: - return icon_175; - case 176: - return icon_176; - case 177: - return icon_177; - case 178: - return icon_178; - case 179: - return icon_179; - case 181: - return icon_181; - case 184: - return icon_184; - case 185: - return icon_185; - case 186: - return icon_186; - case 187: - return icon_187; - case 189: - return icon_189; - case 190: - return icon_190; - case 192: - return icon_192; - case 193: - return icon_193; - case 194: - return icon_194; - case 195: - return icon_195; - case 196: - return icon_196; - case 197: - return icon_197; - case 198: - return icon_198; - case 199: - return icon_199; - case 200: - return icon_200; - case 201: - return icon_201; - case 202: - return icon_202; - case 203: - return icon_203; - case 204: - return icon_204; - case 205: - return icon_205; - case 206: - return icon_206; - case 207: - return icon_207; - case 208: - return icon_208; - case 209: - return icon_209; - case 210: - return icon_210; - case 211: - return icon_211; - case 212: - return icon_212; - case 213: - return icon_213; - case 214: - return icon_214; - case 215: - return icon_215; - case 216: - return icon_216; - case 217: - return icon_217; - case 218: - return icon_218; - case 219: - return icon_219; - case 220: - return icon_220; - case 221: - return icon_221; - case 222: - return icon_222; - case 223: - return icon_223; - case 224: - return icon_224; - case 225: - return icon_225; - case 226: - return icon_226; - case 227: - return icon_227; - case 228: - return icon_228; - case 229: - return icon_229; - case 230: - return icon_230; - case 231: - return icon_231; - case 232: - return icon_232; - case 233: - return icon_233; - case 234: - return icon_234; - case 235: - return icon_235; - case 236: - return icon_236; - case 237: - return icon_237; - case 238: - return icon_238; - case 239: - return icon_239; - case 240: - return icon_240; - case 241: - return icon_241; - case 242: - return icon_242; - case 243: - return icon_243; - case 244: - return icon_244; - case 245: - return icon_245; - case 250: - return icon_250; - case 251: - return icon_251; - case 255: - return icon_255; - case 256: - return icon_256; - case 257: - return icon_257; - case 258: - return icon_258; - case 273: - return icon_273; - case 275: - return icon_275; - case 276: - return icon_276; - case 277: - return icon_277; - case 279: - return icon_279; - case 280: - return icon_280; - case 281: - return icon_281; - case 283: - return icon_283; - case 284: - return icon_284; - case 285: - return icon_285; - case 286: - return icon_286; - case 287: - return icon_287; - case 288: - return icon_288; - case 289: - return icon_289; - case 291: - return icon_291; - case 292: - return icon_292; - case 294: - return icon_294; - case 296: - return icon_296; - case 297: - return icon_297; - case 298: - return icon_298; - case 301: - return icon_301; - case 302: - return icon_302; - case 303: - return icon_303; - case 305: - return icon_305; - case 332: - return icon_332; - case 333: - return icon_333; - case 353: - return icon_353; - case 354: - return icon_354; - case 355: - return icon_355; - case 356: - return icon_356; - case 359: - return icon_359; - case 365: - return icon_365; - case 366: - return icon_366; - case 367: - return icon_367; - case 368: - return icon_368; - case 372: - return icon_372; - case 373: - return icon_373; - case 374: - return icon_374; - case 375: - return icon_375; - case 376: - return icon_376; - case 377: - return icon_377; - case 379: - return icon_379; - case 381: - return icon_381; - case 384: - return icon_384; - case 385: - return icon_385; - case 386: - return icon_386; - case 387: - return icon_387; - case 388: - return icon_388; - case 389: - return icon_389; - case 390: - return icon_390; - case 391: - return icon_391; - case 392: - return icon_392; - case 393: - return icon_393; - case 394: - return icon_394; - case 396: - return icon_396; - case 397: - return icon_397; - case 404: - return icon_404; - case 405: - return icon_405; - case 406: - return icon_406; - case 409: - return icon_409; - case 410: - return icon_410; - case 411: - return icon_411; - case 412: - return icon_412; - case 413: - return icon_413; - case 414: - return icon_414; - case 415: - return icon_415; - case 416: - return icon_416; - case 417: - return icon_417; - case 419: - return icon_419; - case 420: - return icon_420; - case 421: - return icon_421; - case 422: - return icon_422; - case 424: - return icon_424; - case 427: - return icon_427; - case 431: - return icon_431; - case 437: - return icon_437; - case 438: - return icon_438; - case 439: - return icon_439; - case 441: - return icon_441; - case 448: - return icon_448; - case 449: - return icon_449; - case 450: - return icon_450; - case 457: - return icon_457; - case 459: - return icon_459; - case 464: - return icon_464; - case 465: - return icon_465; - case 466: - return icon_466; - case 467: - return icon_467; - case 468: - return icon_468; - case 469: - return icon_469; - case 470: - return icon_470; - case 471: - return icon_471; - case 472: - return icon_472; - case 473: - return icon_473; - case 474: - return icon_474; - case 475: - return icon_475; - case 476: - return icon_476; - case 477: - return icon_477; - case 478: - return icon_478; - case 479: - return icon_479; - case 480: - return icon_480; - case 481: - return icon_481; - case 482: - return icon_482; - case 483: - return icon_483; - case 487: - return icon_487; - case 488: - return icon_488; - case 490: - return icon_490; - case 493: - return icon_493; - case 499: - return icon_499; - case 500: - return icon_500; - case 501: - return icon_501; - case 502: - return icon_502; - case 504: - return icon_504; - case 505: - return icon_505; - case 507: - return icon_507; - case 508: - return icon_508; - case 509: - return icon_509; - case 510: - return icon_510; - case 511: - return icon_511; - case 512: - return icon_512; - case 513: - return icon_513; - case 514: - return icon_514; - case 515: - return icon_515; - case 516: - return icon_516; - case 518: - return icon_518; - case 519: - return icon_519; - case 520: - return icon_520; - case 521: - return icon_521; - case 575: - return icon_575; - case 576: - return icon_576; - case 578: - return icon_578; - case 579: - return icon_579; - case 580: - return icon_580; - case 581: - return icon_581; - case 583: - return icon_583; - case 584: - return icon_584; - case 585: - return icon_585; - case 587: - return icon_587; - case 588: - return icon_588; - case 590: - return icon_590; - case 593: - return icon_593; - case 595: - return icon_595; - case 597: - return icon_597; - case 598: - return icon_598; - case 599: - return icon_599; - case 600: - return icon_600; - case 601: - return icon_601; - case 602: - return icon_602; - case 603: - return icon_603; - case 604: - return icon_604; - case 605: - return icon_605; - case 606: - return icon_606; - case 607: - return icon_607; - case 608: - return icon_608; - case 610: - return icon_610; - case 611: - return icon_611; - case 612: - return icon_612; - case 614: - return icon_614; - case 615: - return icon_615; - case 621: - return icon_621; - case 622: - return icon_622; - case 623: - return icon_623; - case 624: - return icon_624; - case 627: - return icon_627; - case 628: - return icon_628; - case 630: - return icon_630; - case 631: - return icon_631; - case 632: - return icon_632; - case 633: - return icon_633; - case 635: - return icon_635; - case 638: - return icon_638; - case 642: - return icon_642; - case 643: - return icon_643; - case 644: - return icon_644; - case 645: - return icon_645; - case 646: - return icon_646; - case 648: - return icon_648; - case 649: - return icon_649; - case 650: - return icon_650; - case 652: - return icon_652; - case 653: - return icon_653; - case 655: - return icon_655; - case 656: - return icon_656; - case 657: - return icon_657; - case 658: - return icon_658; - case 659: - return icon_659; - case 660: - return icon_660; - case 661: - return icon_661; - case 664: - return icon_664; - case 665: - return icon_665; - case 666: - return icon_666; - case 667: - return icon_667; - case 669: - return icon_669; - case 670: - return icon_670; - case 671: - return icon_671; - case 673: - return icon_673; - case 674: - return icon_674; - case 680: - return icon_680; - case 681: - return icon_681; - case 682: - return icon_682; - case 683: - return icon_683; - case 684: - return icon_684; - case 685: - return icon_685; - case 686: - return icon_686; - case 688: - return icon_688; - case 689: - return icon_689; - case 690: - return icon_690; - case 691: - return icon_691; - case 692: - return icon_692; - case 693: - return icon_693; - case 697: - return icon_697; - case 698: - return icon_698; - case 700: - return icon_700; - case 701: - return icon_701; - case 702: - return icon_702; - case 703: - return icon_703; - case 704: - return icon_704; - case 711: - return icon_711; - case 712: - return icon_712; - case 713: - return icon_713; - case 715: - return icon_715; - case 716: - return icon_716; - case 718: - return icon_718; - case 724: - return icon_724; - case 725: - return icon_725; - case 727: - return icon_727; - case 731: - return icon_731; - case 732: - return icon_732; - case 734: - return icon_734; - case 735: - return icon_735; - case 736: - return icon_736; - case 737: - return icon_737; - case 738: - return icon_738; - case 739: - return icon_739; - case 740: - return icon_740; - case 741: - return icon_741; - case 742: - return icon_742; - case 743: - return icon_743; - case 744: - return icon_744; - case 745: - return icon_745; - case 746: - return icon_746; - case 747: - return icon_747; - case 748: - return icon_748; - case 749: - return icon_749; - case 750: - return icon_750; - case 751: - return icon_751; - case 752: - return icon_752; - case 753: - return icon_753; - case 754: - return icon_754; - case 755: - return icon_755; - case 756: - return icon_756; - case 757: - return icon_757; - case 758: - return icon_758; - case 759: - return icon_759; - case 760: - return icon_760; - case 762: - return icon_762; - case 763: - return icon_763; - case 764: - return icon_764; - case 765: - return icon_765; - case 766: - return icon_766; - case 767: - return icon_767; - case 768: - return icon_768; - case 769: - return icon_769; - case 770: - return icon_770; - case 771: - return icon_771; - case 772: - return icon_772; - case 773: - return icon_773; - case 774: - return icon_774; - case 789: - return icon_789; - case 790: - return icon_790; - case 791: - return icon_791; - case 792: - return icon_792; - case 795: - return icon_795; - case 799: - return icon_799; - case 800: - return icon_800; - case 801: - return icon_801; - case 809: - return icon_809; - case 810: - return icon_810; - case 811: - return icon_811; - case 813: - return icon_813; - case 815: - return icon_815; - case 816: - return icon_816; - case 817: - return icon_817; - case 818: - return icon_818; - case 823: - return icon_823; - case 828: - return icon_828; - case 831: - return icon_831; - case 833: - return icon_833; - case 834: - return icon_834; - case 836: - return icon_836; - case 840: - return icon_840; - case 841: - return icon_841; - case 842: - return icon_842; - case 844: - return icon_844; - case 845: - return icon_845; - case 846: - return icon_846; - case 848: - return icon_848; - case 849: - return icon_849; - case 850: - return icon_850; - case 851: - return icon_851; - case 852: - return icon_852; - case 857: - return icon_857; - case 858: - return icon_858; - case 860: - return icon_860; - case 861: - return icon_861; - case 862: - return icon_862; - case 864: - return icon_864; - case 865: - return icon_865; - case 866: - return icon_866; - case 867: - return icon_867; - case 869: - return icon_869; - case 870: - return icon_870; - case 872: - return icon_872; - case 873: - return icon_873; - case 874: - return icon_874; - case 875: - return icon_875; - case 876: - return icon_876; - case 877: - return icon_877; - case 878: - return icon_878; - case 879: - return icon_879; - case 881: - return icon_881; - case 883: - return icon_883; - case 885: - return icon_885; - case 886: - return icon_886; - case 887: - return icon_887; - case 889: - return icon_889; - case 890: - return icon_890; - case 891: - return icon_891; - case 892: - return icon_892; - case 893: - return icon_893; - case 894: - return icon_894; - case 895: - return icon_895; - case 896: - return icon_896; - case 897: - return icon_897; - case 898: - return icon_898; - case 900: - return icon_900; - case 901: - return icon_901; - case 902: - return icon_902; - case 903: - return icon_903; - case 904: - return icon_904; - case 905: - return icon_905; - case 907: - return icon_907; - case 911: - return icon_911; - case 912: - return icon_912; - case 913: - return icon_913; - case 914: - return icon_914; - case 918: - return icon_918; - case 919: - return icon_919; - case 920: - return icon_920; - case 921: - return icon_921; - case 924: - return icon_924; - case 925: - return icon_925; - case 926: - return icon_926; - case 927: - return icon_927; - case 928: - return icon_928; - case 929: - return icon_929; - case 930: - return icon_930; - case 931: - return icon_931; - case 932: - return icon_932; - case 934: - return icon_934; - case 938: - return icon_938; - case 939: - return icon_939; - case 940: - return icon_940; - case 941: - return icon_941; - case 942: - return icon_942; - case 943: - return icon_943; - case 947: - return icon_947; - case 948: - return icon_948; - case 952: - return icon_952; - case 953: - return icon_953; - case 954: - return icon_954; - case 962: - return icon_962; - case 964: - return icon_964; - case 966: - return icon_966; - case 967: - return icon_967; - case 969: - return icon_969; - case 970: - return icon_970; - case 974: - return icon_974; - case 977: - return icon_977; - case 980: - return icon_980; - case 981: - return icon_981; - case 982: - return icon_982; - case 983: - return icon_983; - case 984: - return icon_984; - case 985: - return icon_985; - case 986: - return icon_986; - case 987: - return icon_987; - case 988: - return icon_988; - case 989: - return icon_989; - case 990: - return icon_990; - case 991: - return icon_991; - case 994: - return icon_994; - case 995: - return icon_995; - case 996: - return icon_996; - case 997: - return icon_997; - case 998: - return icon_998; - case 999: - return icon_999; - case 1000: - return icon_1000; - case 1003: - return icon_1003; - case 1004: - return icon_1004; - case 1005: - return icon_1005; - case 1006: - return icon_1006; - case 1007: - return icon_1007; - case 1008: - return icon_1008; - case 1009: - return icon_1009; - case 1010: - return icon_1010; - case 1011: - return icon_1011; - case 1012: - return icon_1012; - case 1013: - return icon_1013; - case 1015: - return icon_1015; - case 1020: - return icon_1020; - case 1022: - return icon_1022; - case 1023: - return icon_1023; - case 1025: - return icon_1025; - case 1026: - return icon_1026; - case 1027: - return icon_1027; - case 1028: - return icon_1028; - case 1029: - return icon_1029; - case 1030: - return icon_1030; - case 1031: - return icon_1031; - case 1032: - return icon_1032; - case 1033: - return icon_1033; - case 1034: - return icon_1034; - case 1035: - return icon_1035; - case 1036: - return icon_1036; - case 1037: - return icon_1037; - case 1047: - return icon_1047; - case 1050: - return icon_1050; - case 1052: - return icon_1052; - case 1054: - return icon_1054; - case 1055: - return icon_1055; - case 1056: - return icon_1056; - case 1060: - return icon_1060; - case 1061: - return icon_1061; - case 1062: - return icon_1062; - case 1066: - return icon_1066; - case 1067: - return icon_1067; - case 1068: - return icon_1068; - case 1078: - return icon_1078; - case 1084: - return icon_1084; - case 1085: - return icon_1085; - case 1086: - return icon_1086; - case 1087: - return icon_1087; - case 1088: - return icon_1088; - case 1089: - return icon_1089; - case 1090: - return icon_1090; - case 1091: - return icon_1091; - case 1092: - return icon_1092; - case 1093: - return icon_1093; - case 1094: - return icon_1094; - case 1095: - return icon_1095; - case 1096: - return icon_1096; - case 1097: - return icon_1097; - case 1098: - return icon_1098; - case 1099: - return icon_1099; - case 1100: - return icon_1100; - case 1103: - return icon_1103; - case 1104: - return icon_1104; - case 1105: - return icon_1105; - case 1106: - return icon_1106; - case 1107: - return icon_1107; - case 1108: - return icon_1108; - case 1111: - return icon_1111; - case 1112: - return icon_1112; - case 1113: - return icon_1113; - case 1114: - return icon_1114; - case 1117: - return icon_1117; - case 1118: - return icon_1118; - case 1121: - return icon_1121; - case 1125: - return icon_1125; - case 1129: - return icon_1129; - case 1132: - return icon_1132; - case 1133: - return icon_1133; - case 1134: - return icon_1134; - case 1135: - return icon_1135; - case 1138: - return icon_1138; - case 1139: - return icon_1139; - case 1141: - return icon_1141; - case 1142: - return icon_1142; - case 1148: - return icon_1148; - case 1157: - return icon_1157; - case 1158: - return icon_1158; - case 1159: - return icon_1159; - case 1160: - return icon_1160; - case 1161: - return icon_1161; - case 1166: - return icon_1166; - case 1170: - return icon_1170; - case 1171: - return icon_1171; - case 1172: - return icon_1172; - case 1174: - return icon_1174; - case 1180: - return icon_1180; - case 1183: - return icon_1183; - case 1185: - return icon_1185; - case 1187: - return icon_1187; - case 1188: - return icon_1188; - case 1189: - return icon_1189; - case 1191: - return icon_1191; - case 1192: - return icon_1192; - case 1193: - return icon_1193; - case 1194: - return icon_1194; - case 1195: - return icon_1195; - case 1197: - return icon_1197; - case 1200: - return icon_1200; - case 1202: - return icon_1202; - case 1212: - return icon_1212; - case 1213: - return icon_1213; - case 1214: - return icon_1214; - case 1217: - return icon_1217; - case 1218: - return icon_1218; - case 1222: - return icon_1222; - case 1223: - return icon_1223; - case 1228: - return icon_1228; - case 1233: - return icon_1233; - case 1241: - return icon_1241; - case 1242: - return icon_1242; - case 1243: - return icon_1243; - case 1245: - return icon_1245; - case 1247: - return icon_1247; - case 1253: - return icon_1253; - case 1254: - return icon_1254; - case 1256: - return icon_1256; - case 1259: - return icon_1259; - case 1260: - return icon_1260; - case 1263: - return icon_1263; - case 1265: - return icon_1265; - case 1268: - return icon_1268; - case 1270: - return icon_1270; - case 1273: - return icon_1273; - case 1275: - return icon_1275; - case 1279: - return icon_1279; - case 1280: - return icon_1280; - case 1282: - return icon_1282; - case 1288: - return icon_1288; - case 1289: - return icon_1289; - case 1293: - return icon_1293; - case 1294: - return icon_1294; - case 1295: - return icon_1295; - case 1296: - return icon_1296; - case 1297: - return icon_1297; - case 1298: - return icon_1298; - case 1300: - return icon_1300; - case 1306: - return icon_1306; - case 1308: - return icon_1308; - case 1310: - return icon_1310; - case 1313: - return icon_1313; - case 1314: - return icon_1314; - case 1315: - return icon_1315; - case 1316: - return icon_1316; - case 1317: - return icon_1317; - case 1318: - return icon_1318; - case 1319: - return icon_1319; - case 1320: - return icon_1320; - case 1321: - return icon_1321; - case 1331: - return icon_1331; - case 1332: - return icon_1332; - case 1333: - return icon_1333; - case 1335: - return icon_1335; - case 1340: - return icon_1340; - case 1341: - return icon_1341; - case 1351: - return icon_1351; - case 1352: - return icon_1352; - case 1353: - return icon_1353; - case 1355: - return icon_1355; - case 1356: - return icon_1356; - case 1357: - return icon_1357; - case 1364: - return icon_1364; - case 1367: - return icon_1367; - case 1368: - return icon_1368; - case 1370: - return icon_1370; - case 1374: - return icon_1374; - case 1375: - return icon_1375; - case 1376: - return icon_1376; - case 1377: - return icon_1377; - case 1378: - return icon_1378; - case 1379: - return icon_1379; - case 1380: - return icon_1380; - case 1383: - return icon_1383; - case 1386: - return icon_1386; - case 1390: - return icon_1390; - case 1391: - return icon_1391; - case 1392: - return icon_1392; - case 1395: - return icon_1395; - case 1397: - return icon_1397; - case 1398: - return icon_1398; - case 1399: - return icon_1399; - case 1400: - return icon_1400; - case 1402: - return icon_1402; - case 1404: - return icon_1404; - case 1405: - return icon_1405; - case 1406: - return icon_1406; - case 1407: - return icon_1407; - case 1408: - return icon_1408; - case 1411: - return icon_1411; - case 1413: - return icon_1413; - case 1418: - return icon_1418; - case 1419: - return icon_1419; - case 1420: - return icon_1420; - case 1421: - return icon_1421; - case 1422: - return icon_1422; - case 1423: - return icon_1423; - case 1424: - return icon_1424; - case 1425: - return icon_1425; - case 1427: - return icon_1427; - case 1433: - return icon_1433; - case 1435: - return icon_1435; - case 1437: - return icon_1437; - case 1440: - return icon_1440; - case 1441: - return icon_1441; - case 1442: - return icon_1442; - case 1443: - return icon_1443; - case 1444: - return icon_1444; - case 1445: - return icon_1445; - case 1446: - return icon_1446; - case 1447: - return icon_1447; - case 1448: - return icon_1448; - case 1449: - return icon_1449; - case 1452: - return icon_1452; - case 1455: - return icon_1455; - case 1456: - return icon_1456; - case 1457: - return icon_1457; - case 1459: - return icon_1459; - case 1461: - return icon_1461; - case 1462: - return icon_1462; - case 1463: - return icon_1463; - case 1465: - return icon_1465; - case 1469: - return icon_1469; - case 1471: - return icon_1471; - case 1472: - return icon_1472; - case 1474: - return icon_1474; - case 1475: - return icon_1475; - case 1482: - return icon_1482; - case 1485: - return icon_1485; - case 1486: - return icon_1486; - case 1487: - return icon_1487; - case 1488: - return icon_1488; - case 1490: - return icon_1490; - case 1492: - return icon_1492; - case 1495: - return icon_1495; - case 1496: - return icon_1496; - case 1497: - return icon_1497; - case 1498: - return icon_1498; - case 1499: - return icon_1499; - case 1501: - return icon_1501; - case 1502: - return icon_1502; - case 1506: - return icon_1506; - case 1507: - return icon_1507; - case 1508: - return icon_1508; - case 1509: - return icon_1509; - case 1513: - return icon_1513; - case 1515: - return icon_1515; - case 1516: - return icon_1516; - case 1517: - return icon_1517; - case 1518: - return icon_1518; - case 1519: - return icon_1519; - case 1522: - return icon_1522; - case 1525: - return icon_1525; - case 1531: - return icon_1531; - case 1533: - return icon_1533; - case 1534: - return icon_1534; - case 1538: - return icon_1538; - case 1539: - return icon_1539; - case 1540: - return icon_1540; - case 1541: - return icon_1541; - case 1543: - return icon_1543; - case 1544: - return icon_1544; - case 1546: - return icon_1546; - case 1547: - return icon_1547; - case 1548: - return icon_1548; - case 1549: - return icon_1549; - case 1550: - return icon_1550; - case 1552: - return icon_1552; - case 1556: - return icon_1556; - case 1557: - return icon_1557; - case 1559: - return icon_1559; - case 1561: - return icon_1561; - case 1562: - return icon_1562; - case 1563: - return icon_1563; - case 1564: - return icon_1564; - case 1567: - return icon_1567; - case 1571: - return icon_1571; - case 1574: - return icon_1574; - case 1575: - return icon_1575; - case 1576: - return icon_1576; - case 1577: - return icon_1577; - case 1578: - return icon_1578; - case 1585: - return icon_1585; - case 1587: - return icon_1587; - case 1588: - return icon_1588; - case 1589: - return icon_1589; - case 1590: - return icon_1590; - case 1591: - return icon_1591; - case 1592: - return icon_1592; - case 1593: - return icon_1593; - case 1595: - return icon_1595; - case 1596: - return icon_1596; - case 1597: - return icon_1597; - case 1598: - return icon_1598; - case 1601: - return icon_1601; - case 1602: - return icon_1602; - case 1603: - return icon_1603; - case 1604: - return icon_1604; - case 1612: - return icon_1612; - case 1628: - return icon_1628; - case 1629: - return icon_1629; - case 1630: - return icon_1630; - case 1633: - return icon_1633; - case 1634: - return icon_1634; - case 1635: - return icon_1635; - case 1637: - return icon_1637; - case 1638: - return icon_1638; - case 1639: - return icon_1639; - case 1640: - return icon_1640; - case 1642: - return icon_1642; - case 1643: - return icon_1643; - case 1644: - return icon_1644; - case 1645: - return icon_1645; - case 1646: - return icon_1646; - case 1647: - return icon_1647; - case 1648: - return icon_1648; - case 1649: - return icon_1649; - case 1651: - return icon_1651; - case 1652: - return icon_1652; - case 1654: - return icon_1654; - case 1655: - return icon_1655; - case 1658: - return icon_1658; - case 1661: - return icon_1661; - case 1662: - return icon_1662; - case 1663: - return icon_1663; - case 1664: - return icon_1664; - case 1665: - return icon_1665; - case 1666: - return icon_1666; - case 1667: - return icon_1667; - case 1668: - return icon_1668; - case 1669: - return icon_1669; - case 1670: - return icon_1670; - case 1671: - return icon_1671; - case 1672: - return icon_1672; - case 1673: - return icon_1673; - case 1674: - return icon_1674; - case 1675: - return icon_1675; - case 1676: - return icon_1676; - case 1677: - return icon_1677; - case 1678: - return icon_1678; - case 1679: - return icon_1679; - case 1680: - return icon_1680; - case 1681: - return icon_1681; - case 1682: - return icon_1682; - case 1683: - return icon_1683; - case 1684: - return icon_1684; - case 1685: - return icon_1685; - case 1686: - return icon_1686; - case 1687: - return icon_1687; - case 1688: - return icon_1688; - case 1689: - return icon_1689; - case 1690: - return icon_1690; - case 1693: - return icon_1693; - case 1694: - return icon_1694; - case 1697: - return icon_1697; - case 1699: - return icon_1699; - case 1700: - return icon_1700; - case 1701: - return icon_1701; - case 1702: - return icon_1702; - case 1711: - return icon_1711; - case 1713: - return icon_1713; - case 1714: - return icon_1714; - case 1717: - return icon_1717; - case 1718: - return icon_1718; - case 1724: - return icon_1724; - case 1725: - return icon_1725; - case 1726: - return icon_1726; - case 1727: - return icon_1727; - case 1728: - return icon_1728; - case 1729: - return icon_1729; - case 1738: - return icon_1738; - case 1739: - return icon_1739; - case 1740: - return icon_1740; - case 1745: - return icon_1745; - case 1746: - return icon_1746; - case 1753: - return icon_1753; - case 1754: - return icon_1754; - case 1755: - return icon_1755; - case 1756: - return icon_1756; - case 1757: - return icon_1757; - case 1760: - return icon_1760; - case 1761: - return icon_1761; - case 1762: - return icon_1762; - case 1763: - return icon_1763; - case 1764: - return icon_1764; - case 1765: - return icon_1765; - case 1766: - return icon_1766; - case 1767: - return icon_1767; - case 1768: - return icon_1768; - case 1770: - return icon_1770; - case 1771: - return icon_1771; - case 1772: - return icon_1772; - case 1773: - return icon_1773; - case 1774: - return icon_1774; - case 1775: - return icon_1775; - case 1776: - return icon_1776; - case 1777: - return icon_1777; - case 1779: - return icon_1779; - case 1780: - return icon_1780; - case 1781: - return icon_1781; - case 1782: - return icon_1782; - case 1783: - return icon_1783; - case 1786: - return icon_1786; - case 1787: - return icon_1787; - case 1788: - return icon_1788; - case 1789: - return icon_1789; - case 1790: - return icon_1790; - case 1791: - return icon_1791; - case 1792: - return icon_1792; - case 1793: - return icon_1793; - case 1794: - return icon_1794; - case 1795: - return icon_1795; - case 1799: - return icon_1799; - case 1800: - return icon_1800; - case 1801: - return icon_1801; - case 1802: - return icon_1802; - case 1803: - return icon_1803; - case 1804: - return icon_1804; - case 1805: - return icon_1805; - case 1806: - return icon_1806; - case 1807: - return icon_1807; - case 1808: - return icon_1808; - case 1809: - return icon_1809; - case 1810: - return icon_1810; - case 1811: - return icon_1811; - case 1812: - return icon_1812; - case 1813: - return icon_1813; - case 1814: - return icon_1814; - case 1815: - return icon_1815; - case 1816: - return icon_1816; - case 1817: - return icon_1817; - case 1818: - return icon_1818; - case 1819: - return icon_1819; - case 1820: - return icon_1820; - case 1821: - return icon_1821; - case 1822: - return icon_1822; - case 1823: - return icon_1823; - case 1824: - return icon_1824; - case 1825: - return icon_1825; - case 1826: - return icon_1826; - case 1835: - return icon_1835; - case 1836: - return icon_1836; - case 1838: - return icon_1838; - case 1839: - return icon_1839; - case 1851: - return icon_1851; - case 1852: - return icon_1852; - case 1861: - return icon_1861; - case 1867: - return icon_1867; - case 1875: - return icon_1875; - case 1876: - return icon_1876; - case 1878: - return icon_1878; - case 1885: - return icon_1885; - case 1888: - return icon_1888; - case 1892: - return icon_1892; - case 1894: - return icon_1894; - case 1903: - return icon_1903; - case 1911: - return icon_1911; - case 1913: - return icon_1913; - case 1923: - return icon_1923; - case 1931: - return icon_1931; - case 1933: - return icon_1933; - case 1934: - return icon_1934; - case 1935: - return icon_1935; - case 1936: - return icon_1936; - case 1937: - return icon_1937; - case 1938: - return icon_1938; - case 1950: - return icon_1950; - case 1951: - return icon_1951; - case 1952: - return icon_1952; - case 1956: - return icon_1956; - case 1957: - return icon_1957; - case 1966: - return icon_1966; - case 1969: - return icon_1969; - case 1971: - return icon_1971; - case 1976: - return icon_1976; - case 1977: - return icon_1977; - case 1978: - return icon_1978; - case 1979: - return icon_1979; - case 1980: - return icon_1980; - case 1981: - return icon_1981; - case 1982: - return icon_1982; - case 1983: - return icon_1983; - case 1988: - return icon_1988; - case 1989: - return icon_1989; - case 1990: - return icon_1990; - case 1991: - return icon_1991; - case 1992: - return icon_1992; - case 1993: - return icon_1993; - case 1994: - return icon_1994; - case 1995: - return icon_1995; - case 1996: - return icon_1996; - case 1997: - return icon_1997; - case 1998: - return icon_1998; - case 1999: - return icon_1999; - case 2000: - return icon_2000; - case 2001: - return icon_2001; - case 2002: - return icon_2002; - case 2003: - return icon_2003; - case 2007: - return icon_2007; - case 2008: - return icon_2008; - case 2009: - return icon_2009; - case 2010: - return icon_2010; - case 2011: - return icon_2011; - case 2012: - return icon_2012; - case 2013: - return icon_2013; - case 2018: - return icon_2018; - case 2025: - return icon_2025; - case 2032: - return icon_2032; - case 2033: - return icon_2033; - case 2034: - return icon_2034; - case 2035: - return icon_2035; - case 2036: - return icon_2036; - case 2038: - return icon_2038; - case 2039: - return icon_2039; - case 2042: - return icon_2042; - case 2043: - return icon_2043; - case 2044: - return icon_2044; - case 2045: - return icon_2045; - case 2046: - return icon_2046; - case 2047: - return icon_2047; - case 2048: - return icon_2048; - case 2049: - return icon_2049; - case 2050: - return icon_2050; - case 2053: - return icon_2053; - case 2055: - return icon_2055; - case 2056: - return icon_2056; - case 2057: - return icon_2057; - case 2058: - return icon_2058; - case 2059: - return icon_2059; - case 2060: - return icon_2060; - case 2061: - return icon_2061; - case 2062: - return icon_2062; - case 2063: - return icon_2063; - case 2064: - return icon_2064; - case 2065: - return icon_2065; - case 2066: - return icon_2066; - case 2067: - return icon_2067; - case 2068: - return icon_2068; - case 2070: - return icon_2070; - case 2073: - return icon_2073; - case 2074: - return icon_2074; - case 2075: - return icon_2075; - case 2076: - return icon_2076; - case 2077: - return icon_2077; - case 2078: - return icon_2078; - case 2079: - return icon_2079; - case 2080: - return icon_2080; - case 2081: - return icon_2081; - case 2082: - return icon_2082; - case 2084: - return icon_2084; - case 2086: - return icon_2086; - case 2089: - return icon_2089; - case 2090: - return icon_2090; - case 2091: - return icon_2091; - default: - return icon_22; - } -} +const uint16_t *get_icon(uint16_t id); #endif \ No newline at end of file diff --git a/src/main.cpp b/src/main.cpp index c5ac98c..3e78a3a 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -72,7 +72,7 @@ void setup() if (ServerManager.isConnected) { MQTTManager.setup(); - DisplayManager.loadApps(); + DisplayManager.loadNativeApps(); } else { diff --git a/version b/version index 5a6fa40..1e44e88 100644 --- a/version +++ b/version @@ -1 +1 @@ -0.39 \ No newline at end of file +0.40 \ No newline at end of file