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.
90 lines
1.8 KiB
90 lines
1.8 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
|
|
|
|
#include "mp3.h"
|
|
#include "BME280.h"
|
|
#include "image.h"
|
|
|
|
enum menuType { eNone=0, eMainScreen, eMainMenu };
|
|
|
|
extern U8G2_SSD1306_128X64_NONAME_F_SW_I2C u8g2;
|
|
extern char timeStr[];
|
|
extern BME280 bme280;
|
|
extern MP3 mp3;
|
|
extern menuType menuChange;
|
|
extern Basecamp iot;
|
|
|
|
|
|
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";
|
|
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 MainMenu : public SelectionList {
|
|
public:
|
|
MainMenu();
|
|
uint8_t select(void) override;
|
|
private:
|
|
};
|
|
|
|
class MainScreen : public Screen {
|
|
public:
|
|
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;
|
|
};
|
|
|
|
#endif /* _SCREEN_H */
|
|
|