#ifndef TG_DISPLAY_H
#define TG_DISPLAY_H

#include "../epd/epd_cfg.h"
#include "../epd/epd_driver.h"
#include "../epd/epd_paint.h"


#include "../ntp/ntp.h"
#include "../owm/owm.h"
#include "../sensor/sensor.h"


#include <Arduino.h>
#include <Wire.h>
#include <stdlib.h>
#include <WiFi.h>
#include <WiFiMulti.h>
class DisplayWrapper {
public:
    virtual void drawDisplay();
};

class Display {
public:
    static void setup();
    static void clearTime();
    static void drawTime(strDateTime* dt);
    static void refresh();
    static void update(strDateTime* dt);
    static void setViews(DisplayWrapper** views, int8_t size);

    static void nextView();
    static void prevView();
};


class WeatherDisplay: public DisplayWrapper {
public:
    WeatherDisplay(OWM* o) : cowm(o) {}
    void drawDisplay();
private:
    OWM* cowm;


};

class TempDisplay: public DisplayWrapper {
public:
    TempDisplay(Sensor* s) : sensor(s) {}
    void drawDisplay();
private:
    Sensor* sensor;
};


class AirDisplay: public DisplayWrapper {
public:
    AirDisplay(Sensor* s) : sensor(s) {}
    void drawDisplay();
private:
    Sensor* sensor;
};

class LightDisplay: public DisplayWrapper {
public:
    LightDisplay(Sensor* s) : sensor(s) {}
    void drawDisplay();
private:
    Sensor* sensor;
};

class MainDisplay: public DisplayWrapper {
public:
    void drawDisplay();
};

class CustomDisplay: public DisplayWrapper {
public:
    void drawDisplay();
};

#endif