This commit is contained in:
Maurice Grönwoldt 2020-06-13 10:56:20 +02:00
commit 26a2935e1c
52 changed files with 1513 additions and 107 deletions

View file

@ -29,7 +29,6 @@ void Theme::setColour(ThemeColour index, Colour *colour) {
}
void Theme::init() {
setLEDTheme(this);
getColourFromConfig(ThemeColour::bg);
getColourFromConfig(ThemeColour::bg_two);
getColourFromConfig(ThemeColour::accent);
@ -45,6 +44,35 @@ void Theme::getColourFromConfig(ThemeColour index) {
if (m_configFile->containsKey(key)) {
auto baseColour = Colour::fromString(m_configFile->getValue(key));
auto *colour = new Colour(baseColour.getRed(), baseColour.getGreen(), baseColour.getBlue());
setColour(index, colour);
delete m_colours[index];
m_colours[index] = colour;
} else {
// should only trigger if config is broken or empty :)
setLEDTheme(this);
}
}
Colour Theme::getColour(ThemeColour index) {
if (m_colours[index] != nullptr) {
return *m_colours[index];
}
return Colour(255, 255, 255);
}
void Theme::setColourThemeById(int id) {
switch (id) {
case 1:
setLEDTheme(this);
break;
case 2:
setOrangeDreamTheme(this);
break;
case 3:
setBloodTheme(this);
break;
case 4:
setOceanTheme(this);
default:
break;
}
}

View file

@ -15,12 +15,14 @@ enum class ThemeColour {
class Theme {
private:
public:
Theme(std::shared_ptr<PropertiesFile> file);
explicit Theme(std::shared_ptr<PropertiesFile> file);
~Theme();
void setColour(ThemeColour index, Colour *colour);
void setColourThemeById(int id);
void init();
void getColourFromConfig(ThemeColour index);
Colour getColour(ThemeColour index);
protected:
std::map<ThemeColour, Colour*> m_colours;
std::shared_ptr<PropertiesFile> m_configFile;

View file

@ -20,18 +20,59 @@ void setLEDTheme(Theme *theme) {
theme->setColour(ThemeColour::lcd, new Colour(169, 208, 142));
}
void setBloodTheme(Theme *theme) {
theme->setColour(ThemeColour::bg, new Colour(41, 47, 54));
theme->setColour(ThemeColour::bg_two, new Colour(64, 67, 78));
theme->setColour(ThemeColour::accent, new Colour(180, 38, 50));
theme->setColour(ThemeColour::accent_two, new Colour(115, 47, 64));
theme->setColour(ThemeColour::clip, new Colour(255, 23, 68));
theme->setColour(ThemeColour::warning, new Colour(255, 143, 0));
theme->setColour(ThemeColour::lcd_bg, new Colour(0, 0, 0));
theme->setColour(ThemeColour::lcd, new Colour(180, 38, 78));
}
void setOrangeDreamTheme(Theme *theme) {
theme->setColour(ThemeColour::bg, new Colour(21, 21, 21));
theme->setColour(ThemeColour::bg_two, new Colour(42, 42, 42));
theme->setColour(ThemeColour::accent, new Colour(255, 160, 0));
theme->setColour(ThemeColour::accent_two, new Colour(255, 11, 0));
theme->setColour(ThemeColour::clip, new Colour(255, 23, 68));
theme->setColour(ThemeColour::warning, new Colour(255, 143, 0));
theme->setColour(ThemeColour::lcd_bg, new Colour(33, 33, 33));
theme->setColour(ThemeColour::lcd, new Colour(255, 160, 0));
}
void setOceanTheme(Theme *theme) {
theme->setColour(ThemeColour::bg, new Colour(55, 63, 81));
theme->setColour(ThemeColour::bg_two, new Colour(64, 67, 78));
theme->setColour(ThemeColour::accent, new Colour(0, 141, 213));
theme->setColour(ThemeColour::accent_two, new Colour(0, 129, 194));
theme->setColour(ThemeColour::clip, new Colour(255, 23, 68));
theme->setColour(ThemeColour::warning, new Colour(255, 143, 0));
theme->setColour(ThemeColour::lcd_bg, new Colour(21, 21, 21));
theme->setColour(ThemeColour::lcd, new Colour(0, 129, 194));
}
std::string ThemeColourToString(ThemeColour index) {
switch (index)
{
case ThemeColour::bg: return "colour_bg";
case ThemeColour::bg_two: return "colour_bg_two";
case ThemeColour::accent: return "colour_accent";
case ThemeColour::accent_two: return "colour_accent_two";
case ThemeColour::clip: return "colour_clip";
case ThemeColour::warning: return "colour_warning";
case ThemeColour::lcd_bg: return "colour_lcd_bg";
case ThemeColour::lcd: return "colour_lcd";
default: return "";
switch (index) {
case ThemeColour::bg:
return "colour_bg";
case ThemeColour::bg_two:
return "colour_bg_two";
case ThemeColour::accent:
return "colour_accent";
case ThemeColour::accent_two:
return "colour_accent_two";
case ThemeColour::clip:
return "colour_clip";
case ThemeColour::warning:
return "colour_warning";
case ThemeColour::lcd_bg:
return "colour_lcd_bg";
case ThemeColour::lcd:
return "colour_lcd";
default:
return "";
}
}