/**************************************************************************** ** ScStw Styling ** Copyright (C) 2020 Itsblue development ** ** This program is free software: you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation, either version 3 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program. If not, see . ****************************************************************************/ #include "scstwappthememanager.h" ScStwAppThemeManager::ScStwAppThemeManager(QObject *parent) : QObject(parent) { QFontDatabase::addApplicationFont(":/fonts/fa5solid.woff"); QFontDatabase::addApplicationFont(":/fonts/PTMono-Regular.ttf"); QVariantMap icons = { {"back", "\uf053"}, {"settings", "\uf013"}, {"toppad", "\uf10a"}, {"startpad", "\uf3fa"}, {"profiles", "\uf007"}, {"confirm", "\uf00c"}, {"volumeUp", "\uf028"}, {"volumeDown", "\uf027"} }; QVariantMap fonts= { {"icons", "Font Awesome 5 Free"}, {"timers", "PT Mono"} }; ScStwAppTheme * lightTheme = new ScStwAppTheme ( "Light", { {"accent", "#0094ff"}, {"background", "white"}, {"button", "white"}, {"buttonPressed", "lightgrey"}, {"buttonBorder", "grey"}, {"disabledButton", "#d5d5d5"}, {"buttonText", "grey"}, {"buttonPressedText",this->lighter("lightgrey", 0.5)}, {"buttonDisabledText", this->lighter("lightgrey", 0.9)}, {"view", "white"}, {"menu", "#f8f8f8"}, {"delegate1", "#202227"}, {"delegate2", "#202227"}, {"delegateBackground", "white"}, {"delegatePressed", "#dddedf"}, {"text", "black"}, {"textDark", "#232323"}, {"disabledText", "grey"}, {"slider", "#6ccaf2"}, {"success", "#60de26"}, {"error", "#ff0000"}, {"warning", "#e0b928"}, {"line", "grey"}, }, icons, fonts, { {"backIcon", "qrc:/graphics/icons/back_black.png"}, {"settIcon", "qrc:/graphics/icons/settings_black.png"}, {"buzzerIcon", "qrc:/graphics/icons/buzzer_black.png"}, {"startpadIcon", "qrc:/graphics/icons/startpad_black.png"}, {"baseStationIcon", "qrc:/images/BaseStationBlack.png"}, {"profilesIcon", "qrc:/graphics/icons/user_black.png"}, {"confirmIcon", "qrc:/graphics/icons/ok_black.png"}, {"SpeedHold", "qrc:/images/SpeedHoldBlack.png"} }); ScStwAppTheme *darkTheme = new ScStwAppTheme( "Dark", { {"accent", "#0094ff"}, {"background", "#2d3037"}, {"button", "#202227"}, {"buttonPressed", "#41454f"}, {"buttonBorder", "grey"}, {"disabledButton", "#555555"}, {"buttonText", "white"}, {"buttonPressedText",this->lighter("lightgrey", 0.8)}, {"buttonDisabledText", this->lighter("lightgrey", 0.6)}, {"view", "#202227"}, {"menu", "#292b32"}, {"delegate1", "#202227"}, {"delegate2", "#202227"}, {"delegateBackground", "#202227"}, {"delegatePressed", "#41454f"}, {"text", "#ffffff"}, {"textDark", "#232323"}, {"disabledText", "#777777"}, {"slider", "#6ccaf2"}, {"success", "#6bd43b"}, {"error", "#e03b2f"}, {"warning", "#d6ae1e"}, {"line", "grey"}, {"iconFontName", "Font Awesome 5 Free"}, }, icons, fonts, { {"backIcon", "qrc:/graphics/icons/back.png"}, {"settIcon", "qrc:/graphics/icons/settings.png"}, {"buzzerIcon", "qrc:/graphics/icons/buzzer.png"}, {"startpadIcon", "qrc:/graphics/icons/startpad.png"}, {"baseStationIcon", "qrc:/images/BaseStationWhite.png"}, {"profilesIcon", "qrc:/graphics/icons/user.png"}, {"confirmIcon", "qrc:/graphics/icons/ok.png"}, {"SpeedHold", "qrc:/images/SpeedHoldWhite.png"} } ); this->themes.append(lightTheme); this->themes.append(darkTheme); this->currentTheme = this->themes[0]; } ScStwAppTheme* ScStwAppThemeManager::getTheme() { return this->currentTheme; } bool ScStwAppThemeManager::setTheme(QString themeName) { ScStwAppTheme * foundTheme = this->findThemeByName(themeName); if(foundTheme == nullptr) return false; this->currentTheme = foundTheme; emit this->themeChanged(); return true; } ScStwAppTheme * ScStwAppThemeManager::findThemeByName(QString themeName) { foreach (ScStwAppTheme *theme, this->themes) { if(theme->getName() == themeName) return theme; } return nullptr; } QString ScStwAppThemeManager::lighter(QString color, double factor) { QColor qcolor = QColor(color); qcolor.toHsv(); int h, s, v; qcolor.getHsv(&h, &s, &v); qcolor.setHsv(h,s,v * factor); return qcolor.name(); } QString ScStwAppThemeManager::getThemeName() { return this->currentTheme->getName(); }