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.

91 lines
1.8 KiB

#ifndef _SCREEN_H
#define _SCREEN_H
#include <Arduino.h>
#include <vector>
#include <string>
7 years ago
#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"
7 years ago
enum menuType { eNone=0, eMainScreen, eMainMenu };
extern U8G2_SSD1306_128X64_NONAME_F_SW_I2C u8g2;
extern char timeStr[];
extern BME280 bme280;
extern MP3 mp3;
7 years ago
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";
7 years ago
protected:
uint8_t current_pos = 0;
std::vector<std::string> string_list = {
7 years ago
"Altocumulus",
"Altostratus",
"Cirrocumulus",
"Cirrostratus",
"Cirrus",
"Cumulonimbus",
"Cumulus",
"Nimbostratus",
"Stratocumulus",
"Stratus" };
uint8_t top_item = 0;
uint8_t visible = 4;
};
7 years ago
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 */