frontend: Improve wait tree readability for dark themes

This commit is contained in:
David Marcec 2020-07-18 20:22:03 +10:00
parent 4a8cb9a706
commit db4502b7b7
1 changed files with 44 additions and 11 deletions

View File

@ -2,9 +2,11 @@
// Licensed under GPLv2 or any later version // Licensed under GPLv2 or any later version
// Refer to the license.txt file included. // Refer to the license.txt file included.
#include <array>
#include <fmt/format.h> #include <fmt/format.h>
#include "yuzu/debugger/wait_tree.h" #include "yuzu/debugger/wait_tree.h"
#include "yuzu/uisettings.h"
#include "yuzu/util/util.h" #include "yuzu/util/util.h"
#include "common/assert.h" #include "common/assert.h"
@ -19,12 +21,38 @@
#include "core/hle/kernel/thread.h" #include "core/hle/kernel/thread.h"
#include "core/memory.h" #include "core/memory.h"
namespace {
constexpr std::array<std::array<Qt::GlobalColor, 2>, 10> WaitTreeColors{{
{Qt::GlobalColor::darkGreen, Qt::GlobalColor::green},
{Qt::GlobalColor::darkGreen, Qt::GlobalColor::green},
{Qt::GlobalColor::darkBlue, Qt::GlobalColor::cyan},
{Qt::GlobalColor::lightGray, Qt::GlobalColor::lightGray},
{Qt::GlobalColor::lightGray, Qt::GlobalColor::lightGray},
{Qt::GlobalColor::darkRed, Qt::GlobalColor::red},
{Qt::GlobalColor::darkYellow, Qt::GlobalColor::yellow},
{Qt::GlobalColor::red, Qt::GlobalColor::red},
{Qt::GlobalColor::darkCyan, Qt::GlobalColor::cyan},
{Qt::GlobalColor::gray, Qt::GlobalColor::gray},
}};
bool IsDarkTheme() {
const auto theme = UISettings::values.theme.toStdString();
return theme == "qdarkstyle" || theme == "colorful_dark";
}
} // namespace
WaitTreeItem::WaitTreeItem() = default; WaitTreeItem::WaitTreeItem() = default;
WaitTreeItem::~WaitTreeItem() = default; WaitTreeItem::~WaitTreeItem() = default;
QColor WaitTreeItem::GetColor() const { QColor WaitTreeItem::GetColor() const {
if (IsDarkTheme()) {
return QColor(Qt::GlobalColor::white);
} else {
return QColor(Qt::GlobalColor::black); return QColor(Qt::GlobalColor::black);
} }
}
std::vector<std::unique_ptr<WaitTreeItem>> WaitTreeItem::GetChildren() const { std::vector<std::unique_ptr<WaitTreeItem>> WaitTreeItem::GetChildren() const {
return {}; return {};
@ -263,36 +291,41 @@ QString WaitTreeThread::GetText() const {
} }
QColor WaitTreeThread::GetColor() const { QColor WaitTreeThread::GetColor() const {
std::size_t color_index = 0;
if (IsDarkTheme()) {
color_index = 1;
}
const auto& thread = static_cast<const Kernel::Thread&>(object); const auto& thread = static_cast<const Kernel::Thread&>(object);
switch (thread.GetStatus()) { switch (thread.GetStatus()) {
case Kernel::ThreadStatus::Running: case Kernel::ThreadStatus::Running:
return QColor(Qt::GlobalColor::darkGreen); return QColor(WaitTreeColors[0][color_index]);
case Kernel::ThreadStatus::Ready: case Kernel::ThreadStatus::Ready:
if (!thread.IsPaused()) { if (!thread.IsPaused()) {
if (thread.WasRunning()) { if (thread.WasRunning()) {
return QColor(Qt::GlobalColor::darkGreen); return QColor(WaitTreeColors[1][color_index]);
} else { } else {
return QColor(Qt::GlobalColor::darkBlue); return QColor(WaitTreeColors[2][color_index]);
} }
} else { } else {
return QColor(Qt::GlobalColor::lightGray); return QColor(WaitTreeColors[3][color_index]);
} }
case Kernel::ThreadStatus::Paused: case Kernel::ThreadStatus::Paused:
return QColor(Qt::GlobalColor::lightGray); return QColor(WaitTreeColors[4][color_index]);
case Kernel::ThreadStatus::WaitHLEEvent: case Kernel::ThreadStatus::WaitHLEEvent:
case Kernel::ThreadStatus::WaitIPC: case Kernel::ThreadStatus::WaitIPC:
return QColor(Qt::GlobalColor::darkRed); return QColor(WaitTreeColors[5][color_index]);
case Kernel::ThreadStatus::WaitSleep: case Kernel::ThreadStatus::WaitSleep:
return QColor(Qt::GlobalColor::darkYellow); return QColor(WaitTreeColors[6][color_index]);
case Kernel::ThreadStatus::WaitSynch: case Kernel::ThreadStatus::WaitSynch:
case Kernel::ThreadStatus::WaitMutex: case Kernel::ThreadStatus::WaitMutex:
case Kernel::ThreadStatus::WaitCondVar: case Kernel::ThreadStatus::WaitCondVar:
case Kernel::ThreadStatus::WaitArb: case Kernel::ThreadStatus::WaitArb:
return QColor(Qt::GlobalColor::red); return QColor(WaitTreeColors[7][color_index]);
case Kernel::ThreadStatus::Dormant: case Kernel::ThreadStatus::Dormant:
return QColor(Qt::GlobalColor::darkCyan); return QColor(WaitTreeColors[8][color_index]);
case Kernel::ThreadStatus::Dead: case Kernel::ThreadStatus::Dead:
return QColor(Qt::GlobalColor::gray); return QColor(WaitTreeColors[9][color_index]);
default: default:
return WaitTreeItem::GetColor(); return WaitTreeItem::GetColor();
} }