#pragma once

#ifdef ZH_ST7789_LCD

    void lcd_update_progress(const char* progress)
    {
      //in the middle of the screen
      tft.setTextColor(TFT_WHITE,TFT_RED);
      tft.setTextPadding(240);
      tft.setTextDatum(MC_DATUM);
      tft.drawString(progress, 120, 120, 4);
      tft.setTextDatum(TL_DATUM);
    }

    void lcd_middle_text(const char* text)
    {
      //in the middle of the screen
      tft.setTextColor(TFT_WHITE,TFT_RED);
      tft.setTextPadding(240);
      tft.setTextDatum(MC_DATUM);
      tft.drawString(text, 120, 120, 2);
      tft.setTextDatum(TL_DATUM);
    }


//   void tft_error(const char* reason, long wait_time_seconds){
//     #ifdef ST7789_LCD
//       tft.fillScreen(TFT_BLACK);
//       tft.setTextColor(TFT_RED,TFT_WHITE);
//       tft.setCursor(35, 35, 4);
//       tft.println(String(reason));
//       tft.setTextColor(TFT_WHITE,TFT_BLACK);
//       tft.setCursor(35, 65, 4);
//       tft.println("Voltage now: 1.3V");
//       tft.setCursor(35, 95, 4);
//       tft.println("Waiting for "+String(wait_time_seconds)+"s");
//       tft.setCursor(35, 125, 4);
//       tft.println("Reset LPS");
//       tft.setCursor(35, 155, 4);
//       tft.println("and see results");
//       long sm1=millis(); while(millis() < sm1 + (wait_time_seconds * 1000)) {}
//       tft.fillScreen(TFT_BLACK);
//       lcd_template ();
//     #endif
//   }

  void tft_template ()
  {
  //version
    tft.setTextColor(TFT_WHITE,TFT_BLACK);
    tft.setCursor(1, 1, 1);
    // tft.print(String(SHORT_VERSION));
    tft.setCursor(1, 12, 1);
    // tft.print(String(VER_DATE_TIME));
  //volts
    tft.setTextColor(TFT_WHITE,TFT_BLACK);
    tft.setCursor(1, 30, 4);
    tft.print("V");
  //temp
    tft.setTextColor(TFT_WHITE,TFT_BLACK);
    tft.setCursor(220, 15, 2);
    tft.print("C");
  //hum
    tft.setTextColor(TFT_WHITE,TFT_BLACK);
    tft.setCursor(220, 45, 2);
    tft.print("%");
  //power
    tft.setTextColor(TFT_WHITE,TFT_BLACK);
    tft.setCursor(220, 75, 2);
    tft.print("W");
  //amps
    tft.setTextColor(TFT_WHITE,TFT_BLACK);
    tft.setCursor(1, 115, 4);
    tft.print("A");

   //WiFi
    tft.setTextColor(TFT_WHITE,TFT_BLACK);
    tft.setCursor(1, 90, 1);
    tft.print("WiFi:");

   //MQTT
    tft.setTextColor(TFT_WHITE,TFT_BLACK);
    tft.setCursor(70, 90, 1);
    tft.print("MQTT:");

  //Reset label
    tft.setTextColor(TFT_WHITE,TFT_BLACK);
    tft.setCursor(1, 187, 2);
    tft.print("RESET");

  //radiator label
    tft.setTextColor(TFT_WHITE,TFT_BLACK);
    tft.setCursor(1, 215, 2);
    tft.print("Bridge:");
  //
  //fan label
    tft.setTextColor(TFT_WHITE,TFT_BLACK);
    tft.setCursor(135, 215, 2);
    tft.print("PWM:");

  //Boot label
    tft.setTextColor(TFT_WHITE,TFT_BLACK);
    tft.setCursor(200, 187, 2);
    tft.print("BOOT");

  }


//   void tft_mqtt(){
//     // int a;
//     if (mqtt_connected) {
//       tft.setTextColor(TFT_GREEN,TFT_BLACK);
//       tft.setCursor(105, 90, 2);
//       tft.println("OK");
//     } else {
//       tft.setTextColor(TFT_RED,TFT_BLACK);
//       tft.setCursor(105, 90, 2);
//       tft.println("NA");
//     }
//   }


//   void tft_wifi(){
//     float rssi;
//     if (wifi_connected) {
//       rssi = WiFi.RSSI();
//       if (rssi < -99) {rssi= -99;}
//       if (rssi < -85) {tft.setTextColor(TFT_RED,TFT_BLACK);}
//       else if (rssi < -75) {tft.setTextColor(TFT_ORANGE,TFT_BLACK);}
//       else if (rssi < -70) {tft.setTextColor(TFT_YELLOW,TFT_BLACK);}
//       else {tft.setTextColor(TFT_GREEN,TFT_BLACK);}
//       tft.setCursor(35, 90, 2);
//       tft.println(String(rssi,0));
//     } else {
//       tft.setTextColor(TFT_RED,TFT_BLACK);
//       tft.setCursor(35, 90, 2);
//       tft.println(" NA");
//     }
//   }



//   void lcd_pwm(){
//     #if defined(ST7789_LCD) and defined(ST7789_LCD_PWM) and defined(ST7789_LCD_LED_GPIO) and defined(MEAS_LIGHT_TEPT4400)
//       char lux[7];
//       get_lux(lux);
//       // Serial.println("lux:\t"+String(lux));
//       int dc;
//       if (atoi(lux) >= LUX_MAX_RAW_MAPPED_READING) {
//         dc=LCD_MAX_DC;
//       } else
//       {
//         if (atoi(lux) > 5){
//           dc = map(atol(lux),MIN_LUX,LUX_MAX_RAW_MAPPED_READING,LCD_MIN_DC,LCD_MAX_DC);
//         }else
//           {
//             dc = LCD_MIN_DC;
//           }
//         // Serial.println("dc:\t"+String(dc));
//       }
//       ledcWrite(LCD_PWM_CHANNEL, dc);
//     #endif
//   }

#endif
