147 lines
3.7 KiB
C++
147 lines
3.7 KiB
C++
#include "Colors.h"
|
|
|
|
#include <QGuiApplication>
|
|
#include <QPalette>
|
|
#include <QColor>
|
|
|
|
|
|
bool isDarkModeInternal()
|
|
{
|
|
QPalette palette = QGuiApplication::palette();
|
|
QColor backgroundColor = palette.color(QPalette::Window);
|
|
return backgroundColor.lightness() < 128; // Check if the background color is dark
|
|
}
|
|
|
|
bool isDarkMode()
|
|
{
|
|
static bool darkMode = isDarkModeInternal();
|
|
return darkMode;
|
|
}
|
|
|
|
ColorTheme GetLightMode()
|
|
{
|
|
ColorTheme t;
|
|
|
|
t.defaultTextColor = Qt::black;
|
|
|
|
t.gutterBackground = Qt::lightGray;
|
|
t.lineNumber = Qt::black;
|
|
t.currentLine = QColor(Qt::yellow).lighter(160);
|
|
t.errorLine = QColor(Qt::red).lighter(160);
|
|
|
|
t.keyword = QColor(32, 32, 192);
|
|
t.comment = QColor(128, 128, 128);
|
|
t.quotedString = QColor(192, 32, 192);
|
|
t.quotedIdentifier = QColor(192, 128, 32);
|
|
t.type = QColor(32, 192, 32);
|
|
t.parameter = QColor(192, 32, 32);
|
|
|
|
t.gigaBytes = QColorConstants::Svg::darkorange;
|
|
t.megaBytes = QColorConstants::Svg::darkgoldenrod;
|
|
t.kiloBytes = QColorConstants::Svg::darkgreen;
|
|
t.bytes = QColorConstants::Svg::darkblue;
|
|
|
|
t.booleanTrue = Qt::darkGreen;
|
|
t.booleanFalse = Qt::darkRed;
|
|
|
|
t.integerColor = Qt::darkBlue;
|
|
t.floatColor = Qt::darkCyan;
|
|
t.numericColor = Qt::darkGreen;
|
|
t.nullColor = Qt::gray;
|
|
|
|
t.numericTypeColor = Qt::darkBlue;
|
|
t.dateTimeTypeColor = Qt::darkMagenta;
|
|
t.stringTypeColor = Qt::darkYellow;
|
|
|
|
return t;
|
|
}
|
|
|
|
ColorTheme GetDarkMode()
|
|
{
|
|
ColorTheme t;
|
|
|
|
t.defaultTextColor = Qt::lightGray;
|
|
|
|
t.gutterBackground = QColor(Qt::darkGray).darker(400);
|
|
t.lineNumber = Qt::lightGray;
|
|
t.currentLine = QColor(Qt::darkGray).darker(400);;
|
|
t.errorLine = QColor(Qt::red).darker(180);
|
|
|
|
t.keyword = QColor(160, 160, 255);
|
|
t.comment = QColor(160, 160, 160);
|
|
t.quotedString = QColor(255, 160, 255);
|
|
t.quotedIdentifier = QColor(255, 192, 128);
|
|
t.type = QColor(160, 255, 160);
|
|
t.parameter = QColor(255, 160, 160);
|
|
|
|
t.gigaBytes = QColorConstants::Svg::lightcoral;
|
|
t.megaBytes = QColorConstants::Svg::lightgoldenrodyellow;
|
|
t.kiloBytes = QColorConstants::Svg::lightgreen;
|
|
t.bytes = QColorConstants::Svg::lightblue;
|
|
|
|
t.booleanTrue = QColorConstants::Svg::lightgreen;
|
|
t.booleanFalse = QColorConstants::Svg::lightcoral;
|
|
|
|
t.integerColor = QColorConstants::Svg::deepskyblue;
|
|
t.floatColor = QColorConstants::Svg::cyan;
|
|
t.numericColor = QColorConstants::Svg::lime;
|
|
t.nullColor = Qt::darkGray;
|
|
|
|
t.numericTypeColor = QColorConstants::Svg::lightblue;
|
|
t.dateTimeTypeColor = QColor(Qt::magenta);
|
|
t.stringTypeColor = QColor(Qt::yellow);
|
|
|
|
return t;
|
|
}
|
|
|
|
const ColorTheme& GetColorTheme()
|
|
{
|
|
static ColorTheme lightMode = GetLightMode();
|
|
static ColorTheme darkMode = GetDarkMode();
|
|
|
|
return isDarkMode() ? darkMode : lightMode;
|
|
}
|
|
|
|
void InitApplicationPalette()
|
|
{
|
|
if (isDarkMode())
|
|
{
|
|
QPalette pal = QGuiApplication::palette();
|
|
pal.setColor(QPalette::Active, QPalette::Base, QColor(20, 20, 20));
|
|
pal.setColor(QPalette::Active, QPalette::AlternateBase, Qt::black);
|
|
pal.setColor(QPalette::Inactive, QPalette::Base, QColor(20, 20, 20));
|
|
pal.setColor(QPalette::Inactive, QPalette::AlternateBase, Qt::black);
|
|
QGuiApplication::setPalette(pal);
|
|
}
|
|
}
|
|
|
|
QColor ColorTheme::GetColorForType(Oid oid) const
|
|
{
|
|
using namespace Pgsql;
|
|
|
|
QColor c;
|
|
switch (oid) {
|
|
case int2_oid:
|
|
case int4_oid:
|
|
case int8_oid:
|
|
c = integerColor;
|
|
break;
|
|
|
|
case float4_oid:
|
|
case float8_oid:
|
|
c = floatColor;
|
|
break;
|
|
|
|
case numeric_oid:
|
|
c = numericColor;
|
|
break;
|
|
|
|
case varchar_oid:
|
|
case text_oid:
|
|
case oid_oid:
|
|
case bool_oid:
|
|
default:
|
|
c = defaultTextColor;
|
|
}
|
|
return c;
|
|
}
|