mirror of
				https://github.com/esphome/esphome.git
				synced 2025-10-29 22:24:26 +00:00 
			
		
		
		
	Fix log level selector when selecting levels above INFO (#10368)
Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com> Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
This commit is contained in:
		| @@ -3,11 +3,10 @@ | ||||
| namespace esphome::logger { | ||||
|  | ||||
| void LoggerLevelSelect::publish_state(int level) { | ||||
|   auto value = this->at(level); | ||||
|   if (!value) { | ||||
|   const auto &option = this->at(level_to_index(level)); | ||||
|   if (!option) | ||||
|     return; | ||||
|   } | ||||
|   Select::publish_state(value.value()); | ||||
|   Select::publish_state(option.value()); | ||||
| } | ||||
|  | ||||
| void LoggerLevelSelect::setup() { | ||||
| @@ -16,10 +15,10 @@ void LoggerLevelSelect::setup() { | ||||
| } | ||||
|  | ||||
| void LoggerLevelSelect::control(const std::string &value) { | ||||
|   auto level = this->index_of(value); | ||||
|   if (!level) | ||||
|   const auto index = this->index_of(value); | ||||
|   if (!index) | ||||
|     return; | ||||
|   this->parent_->set_log_level(level.value()); | ||||
|   this->parent_->set_log_level(index_to_level(index.value())); | ||||
| } | ||||
|  | ||||
| }  // namespace esphome::logger | ||||
|   | ||||
| @@ -3,11 +3,18 @@ | ||||
| #include "esphome/components/select/select.h" | ||||
| #include "esphome/core/component.h" | ||||
| #include "esphome/components/logger/logger.h" | ||||
|  | ||||
| namespace esphome::logger { | ||||
| class LoggerLevelSelect : public Component, public select::Select, public Parented<Logger> { | ||||
|  public: | ||||
|   void publish_state(int level); | ||||
|   void setup() override; | ||||
|   void control(const std::string &value) override; | ||||
|  | ||||
|  protected: | ||||
|   // Convert log level to option index (skip CONFIG at level 4) | ||||
|   static uint8_t level_to_index(uint8_t level) { return (level > ESPHOME_LOG_LEVEL_CONFIG) ? level - 1 : level; } | ||||
|   // Convert option index to log level (skip CONFIG at level 4) | ||||
|   static uint8_t index_to_level(uint8_t index) { return (index >= ESPHOME_LOG_LEVEL_CONFIG) ? index + 1 : index; } | ||||
| }; | ||||
| }  // namespace esphome::logger | ||||
|   | ||||
		Reference in New Issue
	
	Block a user