forked from wowlet/wowlet
parent
68a5469b97
commit
f05435d694
@ -0,0 +1,39 @@
|
||||
// SPDX-License-Identifier: BSD-3-Clause
|
||||
// Copyright (c) 2020-2021, The Monero Project.
|
||||
// Copyright (c) 2012 thomasv@gitorious
|
||||
|
||||
#include "ColorScheme.h"
|
||||
|
||||
bool ColorScheme::darkScheme = false;
|
||||
ColorSchemeItem ColorScheme::GREEN = ColorSchemeItem("#117c11", "#8af296");
|
||||
ColorSchemeItem ColorScheme::YELLOW = ColorSchemeItem("#897b2a", "#ffff00");
|
||||
ColorSchemeItem ColorScheme::RED = ColorSchemeItem("#7c1111", "#f18c8c");
|
||||
ColorSchemeItem ColorScheme::BLUE = ColorSchemeItem("#123b7c", "#8cb3f2");
|
||||
ColorSchemeItem ColorScheme::DEFAULT = ColorSchemeItem("black", "white");
|
||||
ColorSchemeItem ColorScheme::GRAY = ColorSchemeItem("gray", "gray");
|
||||
|
||||
bool ColorScheme::hasDarkBackground(QWidget *widget) {
|
||||
int r, g, b;
|
||||
widget->palette().color(QPalette::Background).getRgb(&r, &g, &b);
|
||||
auto brightness = r + g + b;
|
||||
return brightness < (255*3/2);
|
||||
}
|
||||
|
||||
void ColorScheme::updateFromWidget(QWidget *widget, bool forceDark) {
|
||||
darkScheme = forceDark or ColorScheme::hasDarkBackground(widget);
|
||||
}
|
||||
|
||||
QString ColorSchemeItem::asStylesheet(bool background) {
|
||||
auto cssPrefix = background ? "background-" : "";
|
||||
auto color = this->getColor(background);
|
||||
return QString("QWidget { %1color : %2; }").arg(cssPrefix, color);
|
||||
}
|
||||
|
||||
QColor ColorSchemeItem::asColor(bool background) {
|
||||
auto color = this->getColor(background);
|
||||
return QColor(color);
|
||||
}
|
||||
|
||||
QString ColorSchemeItem::getColor(bool background) {
|
||||
return m_colors[(int(background) + int(ColorScheme::darkScheme)) % 2];
|
||||
}
|
@ -0,0 +1,44 @@
|
||||
// SPDX-License-Identifier: BSD-3-Clause
|
||||
// Copyright (c) 2020-2021, The Monero Project.
|
||||
// Copyright (c) 2012 thomasv@gitorious
|
||||
|
||||
#ifndef FEATHER_COLORSCHEME_H
|
||||
#define FEATHER_COLORSCHEME_H
|
||||
|
||||
#include <QString>
|
||||
#include <QVector>
|
||||
#include <QColor>
|
||||
#include <QWidget>
|
||||
|
||||
class ColorSchemeItem {
|
||||
|
||||
public:
|
||||
explicit ColorSchemeItem(const QString &fgColor, const QString &bgColor)
|
||||
: m_colors({fgColor, bgColor}) {}
|
||||
|
||||
QString asStylesheet(bool background = false);
|
||||
QColor asColor(bool background = false);
|
||||
|
||||
private:
|
||||
QString getColor(bool background);
|
||||
QVector<QString> m_colors;
|
||||
};
|
||||
|
||||
|
||||
class ColorScheme {
|
||||
public:
|
||||
static bool darkScheme;
|
||||
|
||||
static ColorSchemeItem GREEN;
|
||||
static ColorSchemeItem YELLOW;
|
||||
static ColorSchemeItem RED;
|
||||
static ColorSchemeItem BLUE;
|
||||
static ColorSchemeItem DEFAULT;
|
||||
static ColorSchemeItem GRAY;
|
||||
|
||||
static bool hasDarkBackground(QWidget *widget);
|
||||
static void updateFromWidget(QWidget *widget, bool forceDark = false);
|
||||
};
|
||||
|
||||
|
||||
#endif //FEATHER_COLORSCHEME_H
|
Loading…
Reference in new issue