From 05e9b982cdb39959f9201b4f1f1df6cd5c5279fd Mon Sep 17 00:00:00 2001 From: eelke Date: Mon, 10 Mar 2025 19:01:03 +0100 Subject: [PATCH] Fix explain colors in dark mode --- pglab/querytool/QueryExplainModel.cpp | 19 ++++++++++--------- pglab/querytool/QueryExplainModel.h | 2 ++ pglab/util/Colors.cpp | 18 ++++++++++++++++++ pglab/util/Colors.h | 2 ++ 4 files changed, 32 insertions(+), 9 deletions(-) diff --git a/pglab/querytool/QueryExplainModel.cpp b/pglab/querytool/QueryExplainModel.cpp index 38cf1d1..51381ec 100644 --- a/pglab/querytool/QueryExplainModel.cpp +++ b/pglab/querytool/QueryExplainModel.cpp @@ -16,6 +16,7 @@ const int c_NumberOfColumns = 8; QueryExplainModel::QueryExplainModel(QObject *parent, ExplainRoot::SPtr exp) : QAbstractItemModel(parent) , explain(std::move(exp)) + , theme(GetColorTheme()) {} QVariant QueryExplainModel::data(const QModelIndex &index, int role) const @@ -67,35 +68,35 @@ if (role == Qt::DisplayRole) { if (tt > 0.000000001f) { float f = t / tt; if (f > 0.9f) { - result = QColor(255, 192, 192); + result = theme.explainTime[0]; } else if (f > 0.63f) { - result = QColor(255, 224, 192); + result = theme.explainTime[1]; } else if (f > 0.36f) { - result = QColor(255, 255, 192); + result = theme.explainTime[2]; } else if (f > 0.09f) { - result = QColor(255, 255, 224); + result = theme.explainTime[3]; } else { - result = QColor(Qt::white); + result = {}; } } } if (col == c_ColumnEstErr) { float e = std::fabs(item->estimateError()); if (e > 1000.0f) { - result = QColor(255, 192, 192); + result = theme.explainEstError[0]; } else if (e > 100.0f) { - result = QColor(255, 224, 192); + result = theme.explainEstError[1]; } else if (e > 10.0f) { - result = QColor(255, 255, 192); + result = theme.explainEstError[2]; } else { - result = QColor(Qt::white); + result = {}; //QColor(Qt::white); } } } diff --git a/pglab/querytool/QueryExplainModel.h b/pglab/querytool/QueryExplainModel.h index 0aa318a..0860e82 100644 --- a/pglab/querytool/QueryExplainModel.h +++ b/pglab/querytool/QueryExplainModel.h @@ -2,6 +2,7 @@ #include #include +#include #include "ExplainTreeModelItem.h" /** \brief Model class for displaying the explain of a query in a tree like format. @@ -30,4 +31,5 @@ public: private: ExplainRoot::SPtr explain; + const ColorTheme &theme; }; diff --git a/pglab/util/Colors.cpp b/pglab/util/Colors.cpp index 3a62693..17510fe 100644 --- a/pglab/util/Colors.cpp +++ b/pglab/util/Colors.cpp @@ -53,6 +53,15 @@ ColorTheme GetLightMode() t.dateTimeTypeColor = Qt::darkMagenta; t.stringTypeColor = Qt::darkYellow; + t.explainTime[0] = QColor(255, 192, 192); + t.explainTime[1] = QColor(255, 224, 192); + t.explainTime[2] = QColor(255, 255, 192); + t.explainTime[3] = QColor(255, 255, 224); + + t.explainEstError[0] = QColor(255, 192, 192); + t.explainEstError[1] = QColor(255, 224, 192); + t.explainEstError[2] = QColor(255, 255, 192); + return t; } @@ -91,6 +100,15 @@ ColorTheme GetDarkMode() t.dateTimeTypeColor = QColor(Qt::magenta); t.stringTypeColor = QColor(Qt::yellow); + t.explainTime[0] = QColor(120, 20, 20); + t.explainTime[1] = QColor(110, 40, 20); + t.explainTime[2] = QColor(90, 50, 20); + t.explainTime[3] = QColor(70, 70, 20); + + t.explainEstError[0] = QColor(120, 20, 20); + t.explainEstError[1] = QColor(90, 50, 20); + t.explainEstError[2] = QColor(70, 70, 20); + return t; } diff --git a/pglab/util/Colors.h b/pglab/util/Colors.h index e3f09c6..e08dad3 100644 --- a/pglab/util/Colors.h +++ b/pglab/util/Colors.h @@ -41,6 +41,8 @@ struct ColorTheme QColor GetColorForType(Oid oid) const; + QColor explainTime[4]; + QColor explainEstError[3]; }; const ColorTheme& GetColorTheme();