From abedb61ca1e11ee5a3ca50777fda6a1b943dbc38 Mon Sep 17 00:00:00 2001 From: Alex T Date: Sat, 15 Oct 2016 12:07:48 +0300 Subject: [PATCH] parameter label --- WiFiManager.cpp | 32 +++++++++++++++++++++++++------- WiFiManager.h | 9 +++++++++ 2 files changed, 34 insertions(+), 7 deletions(-) diff --git a/WiFiManager.cpp b/WiFiManager.cpp index 93bf578..61e0e49 100644 --- a/WiFiManager.cpp +++ b/WiFiManager.cpp @@ -17,22 +17,23 @@ WiFiManagerParameter::WiFiManagerParameter(const char *custom) { _placeholder = NULL; _length = 0; _value = NULL; - + _labelPlacement = WFM_LABEL_BEFORE; _customHTML = custom; } WiFiManagerParameter::WiFiManagerParameter(const char *id, const char *placeholder, const char *defaultValue, int length) { - init(id, placeholder, defaultValue, length, ""); + init(id, placeholder, defaultValue, length, "", WFM_LABEL_BEFORE); } WiFiManagerParameter::WiFiManagerParameter(const char *id, const char *placeholder, const char *defaultValue, int length, const char *custom) { - init(id, placeholder, defaultValue, length, custom); + init(id, placeholder, defaultValue, length, custom, WFM_LABEL_BEFORE); } -void WiFiManagerParameter::init(const char *id, const char *placeholder, const char *defaultValue, int length, const char *custom) { +void WiFiManagerParameter::init(const char *id, const char *placeholder, const char *defaultValue, int length, const char *custom, int labelPlacement) { _id = id; _placeholder = placeholder; _length = length; + _labelPlacement = labelPlacement; _value = new char[length + 1]; for (int i = 0; i < length; i++) { _value[i] = 0; @@ -56,6 +57,9 @@ const char* WiFiManagerParameter::getPlaceholder() { int WiFiManagerParameter::getValueLength() { return _length; } +int WiFiManagerParameter::getLabelPlacement() { + return _labelPlacement; +} const char* WiFiManagerParameter::getCustomHTML() { return _customHTML; } @@ -115,8 +119,7 @@ void WiFiManager::setupConfigPortal() { server->on("/wifisave", std::bind(&WiFiManager::handleWifiSave, this)); server->on("/i", std::bind(&WiFiManager::handleInfo, this)); server->on("/r", std::bind(&WiFiManager::handleReset, this)); - //server->on("/generate_204", std::bind(&WiFiManager::handle204, this)); //Android/Chrome OS captive portal check. - server->on("/fwlink", std::bind(&WiFiManager::handleRoot, this)); //Microsoft captive portal. Maybe not needed. Might be handled by notFound handler. + //server->on("/fwlink", std::bind(&WiFiManager::handleRoot, this)); //Microsoft captive portal. Maybe not needed. Might be handled by notFound handler. server->onNotFound (std::bind(&WiFiManager::handleNotFound, this)); server->begin(); // Web server start DEBUG_WM(F("HTTP server started")); @@ -471,7 +474,22 @@ void WiFiManager::handleWifi(boolean scan) { break; } - String pitem = FPSTR(HTTP_FORM_PARAM); + //String pitem = FPSTR(HTTP_FORM_PARAM); + String pitem; + switch (_params[i]->getLabelPlacement()) { + case WFM_LABEL_BEFORE: + pitem = FPSTR(HTTP_FORM_LABEL); + pitem += FPSTR(HTTP_FORM_PARAM); + break; + case WFM_LABEL_AFTER: + pitem = FPSTR(HTTP_FORM_PARAM); + pitem += FPSTR(HTTP_FORM_LABEL); + break; + default: + // WFM_NO_LABEL + pitem = FPSTR(HTTP_FORM_PARAM); + break; + } if (_params[i]->getID() != NULL) { pitem.replace("{i}", _params[i]->getID()); pitem.replace("{n}", _params[i]->getID()); diff --git a/WiFiManager.h b/WiFiManager.h index bd67c05..7c2c835 100644 --- a/WiFiManager.h +++ b/WiFiManager.h @@ -29,6 +29,7 @@ const char HTTP_HEAD_END[] PROGMEM = "
{v} {r}%
"; const char HTTP_FORM_START[] PROGMEM = "


"; +const char HTTP_FORM_LABEL[] PROGMEM = ""; const char HTTP_FORM_PARAM[] PROGMEM = "
"; const char HTTP_FORM_END[] PROGMEM = "
"; const char HTTP_SCAN_LINK[] PROGMEM = "
Scan
"; @@ -37,25 +38,33 @@ const char HTTP_END[] PROGMEM = ""; #define WIFI_MANAGER_MAX_PARAMS 10 +#define WFM_LABEL_BEFORE 1 +#define WFM_LABEL_AFTER 2 +#define WFM_NO_LABEL 0 + class WiFiManagerParameter { public: WiFiManagerParameter(const char *custom); WiFiManagerParameter(const char *id, const char *placeholder, const char *defaultValue, int length); WiFiManagerParameter(const char *id, const char *placeholder, const char *defaultValue, int length, const char *custom); + WiFiManagerParameter(const char *id, const char *placeholder, const char *defaultValue, int length, const char *custom, int labelPlacement); const char *getID(); const char *getValue(); const char *getPlaceholder(); int getValueLength(); + int getLabelPlacement(); const char *getCustomHTML(); private: const char *_id; const char *_placeholder; char *_value; int _length; + int _labelPlacement; const char *_customHTML; void init(const char *id, const char *placeholder, const char *defaultValue, int length, const char *custom); + void init(const char *id, const char *placeholder, const char *defaultValue, int length, const char *custom, int labelPlacement); friend class WiFiManager; };