#pragma once

#include <map>
#include "esphome/core/component.h"
#include "esphome/components/select/select.h"

namespace esphome {
namespace tw7100 {

class tw7100Component;

class tw7100Select : public select::Select, public Component {
  public:
    void setup() override;
    void dump_config() override;
    void set_tw7100_parent(tw7100Component *parent) { this->parent_ = parent; }
    void set_cmd(std::string cmd) { this->cmd_ = cmd; }
    static std::map<std::string, std::string> sources;
    static std::map<std::string, std::string> luminance;
    static std::map<std::string, std::string> aspect;
    static std::map<std::string, std::string> msel;
    static std::map<std::string, std::string> speed;
    static std::map<std::string, std::string> mcfi;
    static std::map<std::string, std::string> clrspace;
    static std::map<std::string, std::string> dynrange;
    static std::map<std::string, std::string> imgpreset;
    static std::map<std::string, std::string> gamma;
    static std::map<std::string, std::string> cmode;
    static std::map<std::string, std::string> ovscan;

  protected:
    void control(const std::string &value) override;
    std::string cmd_;
    tw7100Component *parent_;
};

}  // namespace tw7100
}  // namespace esphome