You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

147 lines
3.1 KiB

#ifndef _SCREEN_H
#define _SCREEN_H
#include <Arduino.h>
#include <vector>
#include <string>
#include <Basecamp.hpp>
#include <Configuration.hpp>
#include <U8g2lib.h>
#ifdef U8X8_HAVE_HW_SPI
#include <SPI.h>
#endif
#ifdef U8X8_HAVE_HW_I2C
#include <Wire.h>
#endif
#define U8G2_16BIT
#include "main.h"
#include "mp3.h"
#include "BME280.h"
#include "image.h"
#include "led.h"
#include "AlarmClock.h"
enum menuType { eNone=0, eWelcomeScreen, eMainScreen, eMainMenu, eStationMenu, eAlarmClockScreen, eSuspendScreen, eLightScreen };
extern U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2;
extern WEBRADIO_STATE state;
extern BME280 bme280;
extern MP3 mp3;
extern menuType menuChange;
extern Basecamp iot;
extern Led led;
extern AlarmClock alarmclock;
class Screen {
public:
// Screen();
virtual void draw(void) = 0;
virtual void next(void);
virtual void previous(void);
virtual uint8_t select(void);
const char* title = "Test Screen";
virtual void drawStatusBar(uint8_t y_offset);
private:
};
class SelectionList : public Screen {
public:
SelectionList();
SelectionList(const char*, uint8_t, const char*);
void draw(void) override;
void next(void) override;
void previous(void) override;
uint8_t select(void) override;
const char* title = "Cloud Types";
protected:
uint8_t current_pos = 0;
std::vector<std::string> string_list = {
"Altocumulus",
"Altostratus",
"Cirrocumulus",
"Cirrostratus",
"Cirrus",
"Cumulonimbus",
"Cumulus",
"Nimbostratus",
"Stratocumulus",
"Stratus" };
uint8_t top_item = 0;
uint8_t visible = 4;
};
class MainScreen : public Screen {
public:
MainScreen();
void draw(void) override;
void next(void) override;
void previous(void) override;
uint8_t select(void) override;
const char* title = "Main Screen";
private:
uint32_t lastVolumeChange = 0;
u8g2_uint_t titleStr_offset = 0;
uint8_t volume = 20;
};
class WelcomeScreen : public Screen {
public:
void draw(void) override;
const char* title = "Welcome Screen";
private:
int progress = 0;
};
class MainMenu : public SelectionList {
public:
MainMenu();
uint8_t select(void) override;
private:
};
class StationMenu : public SelectionList {
public:
StationMenu();
uint8_t select(void) override;
private:
};
class AlarmClockScreen : public Screen {
public:
AlarmClockScreen();
void draw(void) override;
void next(void) override;
void previous(void) override;
uint8_t select(void) override;
const char* title = "Alarm Clock";
private:
uint32_t lastRotary = 0;
struct tm alarmTime;
};
class SuspendScreen : public Screen {
public:
void draw(void) override;
const char* title = "zzzzzZZZZZ";
private:
int progress = 0;
};
class LightScreen : public Screen {
public:
LightScreen();
void draw(void) override;
void next(void) override;
void previous(void) override;
uint8_t select(void) override;
const char* title = "Wohnzimmer L";
private:
uint32_t lastRotary = 0;
int brightness;
};
#endif /* _SCREEN_H */