feat(command-zone): add settings and theme support

Integrate command zones with the client settings and theming system.

Settings integration:
- CacheSettings: persist command zone preferences
- ShortcutsSettings: keyboard shortcuts for zone actions

Theme support:
- ThemeManager: command zone background loading
- Theme assets for Fabric, Leather, Plasma, VelvetMarble themes

Visual integration:
- MessageLogWidget: command zone action logging

Theme assets provide consistent visual styling across all bundled themes.
This commit is contained in:
DawnFire42 2026-02-26 15:52:51 -05:00
parent 4bd6ab56c5
commit 47fade7bcb
10 changed files with 169 additions and 277 deletions

View file

@ -384,6 +384,9 @@ SettingsCache::SettingsCache()
createGameAsSpectator = settings->value("game/creategameasspectator", false).toBool();
defaultStartingLifeTotal = settings->value("game/defaultstartinglifetotal", 20).toInt();
shareDecklistsOnLoad = settings->value("game/sharedecklistsonload", false).toBool();
enableCommandZone = settings->value("game/enablecommandzone", false).toBool();
enableCompanionZone = settings->value("game/enablecompanionzone", true).toBool();
enableBackgroundZone = settings->value("game/enablebackgroundzone", true).toBool();
rememberGameSettings = settings->value("game/remembergamesettings", true).toBool();
clientID = settings->value("personal/clientid", CLIENT_INFO_NOT_SET).toString();
clientVersion = settings->value("personal/clientversion", CLIENT_INFO_NOT_SET).toString();
@ -1115,257 +1118,28 @@ void SettingsCache::setClientVersion(const QString &_clientVersion)
QStringList SettingsCache::getCountries() const
{
static QStringList countries = QStringList() << "ad"
<< "ae"
<< "af"
<< "ag"
<< "ai"
<< "al"
<< "am"
<< "ao"
<< "aq"
<< "ar"
<< "as"
<< "at"
<< "au"
<< "aw"
<< "ax"
<< "az"
<< "ba"
<< "bb"
<< "bd"
<< "be"
<< "bf"
<< "bg"
<< "bh"
<< "bi"
<< "bj"
<< "bl"
<< "bm"
<< "bn"
<< "bo"
<< "bq"
<< "br"
<< "bs"
<< "bt"
<< "bv"
<< "bw"
<< "by"
<< "bz"
<< "ca"
<< "cc"
<< "cd"
<< "cf"
<< "cg"
<< "ch"
<< "ci"
<< "ck"
<< "cl"
<< "cm"
<< "cn"
<< "co"
<< "cr"
<< "cu"
<< "cv"
<< "cw"
<< "cx"
<< "cy"
<< "cz"
<< "de"
<< "dj"
<< "dk"
<< "dm"
<< "do"
<< "dz"
<< "ec"
<< "ee"
<< "eg"
<< "eh"
<< "er"
<< "es"
<< "et"
<< "eu"
<< "fi"
<< "fj"
<< "fk"
<< "fm"
<< "fo"
<< "fr"
<< "ga"
<< "gb"
<< "gd"
<< "ge"
<< "gf"
<< "gg"
<< "gh"
<< "gi"
<< "gl"
<< "gm"
<< "gn"
<< "gp"
<< "gq"
<< "gr"
<< "gs"
<< "gt"
<< "gu"
<< "gw"
<< "gy"
<< "hk"
<< "hm"
<< "hn"
<< "hr"
<< "ht"
<< "hu"
<< "id"
<< "ie"
<< "il"
<< "im"
<< "in"
<< "io"
<< "iq"
<< "ir"
<< "is"
<< "it"
<< "je"
<< "jm"
<< "jo"
<< "jp"
<< "ke"
<< "kg"
<< "kh"
<< "ki"
<< "km"
<< "kn"
<< "kp"
<< "kr"
<< "kw"
<< "ky"
<< "kz"
<< "la"
<< "lb"
<< "lc"
<< "li"
<< "lk"
<< "lr"
<< "ls"
<< "lt"
<< "lu"
<< "lv"
<< "ly"
<< "ma"
<< "mc"
<< "md"
<< "me"
<< "mf"
<< "mg"
<< "mh"
<< "mk"
<< "ml"
<< "mm"
<< "mn"
<< "mo"
<< "mp"
<< "mq"
<< "mr"
<< "ms"
<< "mt"
<< "mu"
<< "mv"
<< "mw"
<< "mx"
<< "my"
<< "mz"
<< "na"
<< "nc"
<< "ne"
<< "nf"
<< "ng"
<< "ni"
<< "nl"
<< "no"
<< "np"
<< "nr"
<< "nu"
<< "nz"
<< "om"
<< "pa"
<< "pe"
<< "pf"
<< "pg"
<< "ph"
<< "pk"
<< "pl"
<< "pm"
<< "pn"
<< "pr"
<< "ps"
<< "pt"
<< "pw"
<< "py"
<< "qa"
<< "re"
<< "ro"
<< "rs"
<< "ru"
<< "rw"
<< "sa"
<< "sb"
<< "sc"
<< "sd"
<< "se"
<< "sg"
<< "sh"
<< "si"
<< "sj"
<< "sk"
<< "sl"
<< "sm"
<< "sn"
<< "so"
<< "sr"
<< "ss"
<< "st"
<< "sv"
<< "sx"
<< "sy"
<< "sz"
<< "tc"
<< "td"
<< "tf"
<< "tg"
<< "th"
<< "tj"
<< "tk"
<< "tl"
<< "tm"
<< "tn"
<< "to"
<< "tr"
<< "tt"
<< "tv"
<< "tw"
<< "tz"
<< "ua"
<< "ug"
<< "um"
<< "us"
<< "uy"
<< "uz"
<< "va"
<< "vc"
<< "ve"
<< "vg"
<< "vi"
<< "vn"
<< "vu"
<< "wf"
<< "ws"
<< "xk"
<< "ye"
<< "yt"
<< "za"
<< "zm"
<< "zw";
static QStringList countries =
QStringList() << "ad" << "ae" << "af" << "ag" << "ai" << "al" << "am" << "ao" << "aq" << "ar" << "as" << "at"
<< "au" << "aw" << "ax" << "az" << "ba" << "bb" << "bd" << "be" << "bf" << "bg" << "bh" << "bi"
<< "bj" << "bl" << "bm" << "bn" << "bo" << "bq" << "br" << "bs" << "bt" << "bv" << "bw" << "by"
<< "bz" << "ca" << "cc" << "cd" << "cf" << "cg" << "ch" << "ci" << "ck" << "cl" << "cm" << "cn"
<< "co" << "cr" << "cu" << "cv" << "cw" << "cx" << "cy" << "cz" << "de" << "dj" << "dk" << "dm"
<< "do" << "dz" << "ec" << "ee" << "eg" << "eh" << "er" << "es" << "et" << "eu" << "fi" << "fj"
<< "fk" << "fm" << "fo" << "fr" << "ga" << "gb" << "gd" << "ge" << "gf" << "gg" << "gh" << "gi"
<< "gl" << "gm" << "gn" << "gp" << "gq" << "gr" << "gs" << "gt" << "gu" << "gw" << "gy" << "hk"
<< "hm" << "hn" << "hr" << "ht" << "hu" << "id" << "ie" << "il" << "im" << "in" << "io" << "iq"
<< "ir" << "is" << "it" << "je" << "jm" << "jo" << "jp" << "ke" << "kg" << "kh" << "ki" << "km"
<< "kn" << "kp" << "kr" << "kw" << "ky" << "kz" << "la" << "lb" << "lc" << "li" << "lk" << "lr"
<< "ls" << "lt" << "lu" << "lv" << "ly" << "ma" << "mc" << "md" << "me" << "mf" << "mg" << "mh"
<< "mk" << "ml" << "mm" << "mn" << "mo" << "mp" << "mq" << "mr" << "ms" << "mt" << "mu" << "mv"
<< "mw" << "mx" << "my" << "mz" << "na" << "nc" << "ne" << "nf" << "ng" << "ni" << "nl" << "no"
<< "np" << "nr" << "nu" << "nz" << "om" << "pa" << "pe" << "pf" << "pg" << "ph" << "pk" << "pl"
<< "pm" << "pn" << "pr" << "ps" << "pt" << "pw" << "py" << "qa" << "re" << "ro" << "rs" << "ru"
<< "rw" << "sa" << "sb" << "sc" << "sd" << "se" << "sg" << "sh" << "si" << "sj" << "sk" << "sl"
<< "sm" << "sn" << "so" << "sr" << "ss" << "st" << "sv" << "sx" << "sy" << "sz" << "tc" << "td"
<< "tf" << "tg" << "th" << "tj" << "tk" << "tl" << "tm" << "tn" << "to" << "tr" << "tt" << "tv"
<< "tw" << "tz" << "ua" << "ug" << "um" << "us" << "uy" << "uz" << "va" << "vc" << "ve" << "vg"
<< "vi" << "vn" << "vu" << "wf" << "ws" << "xk" << "ye" << "yt" << "za" << "zm" << "zw";
return countries;
}
@ -1442,6 +1216,24 @@ void SettingsCache::setShareDecklistsOnLoad(const bool _shareDecklistsOnLoad)
settings->setValue("game/sharedecklistsonload", shareDecklistsOnLoad);
}
void SettingsCache::setEnableCommandZone(const bool _enableCommandZone)
{
enableCommandZone = _enableCommandZone;
settings->setValue("game/enablecommandzone", enableCommandZone);
}
void SettingsCache::setEnableCompanionZone(const bool _enableCompanionZone)
{
enableCompanionZone = _enableCompanionZone;
settings->setValue("game/enablecompanionzone", enableCompanionZone);
}
void SettingsCache::setEnableBackgroundZone(const bool _enableBackgroundZone)
{
enableBackgroundZone = _enableBackgroundZone;
settings->setValue("game/enablebackgroundzone", enableBackgroundZone);
}
void SettingsCache::setCheckUpdatesOnStartup(QT_STATE_CHANGED_T value)
{
checkUpdatesOnStartup = static_cast<bool>(value);

View file

@ -323,6 +323,9 @@ private:
bool createGameAsSpectator;
int defaultStartingLifeTotal;
bool shareDecklistsOnLoad;
bool enableCommandZone;
bool enableCompanionZone;
bool enableBackgroundZone;
int keepalive;
int timeout;
void translateLegacySettings();
@ -854,6 +857,18 @@ public:
{
return shareDecklistsOnLoad;
}
[[nodiscard]] bool getEnableCommandZone() const
{
return enableCommandZone;
}
[[nodiscard]] bool getEnableCompanionZone() const
{
return enableCompanionZone;
}
[[nodiscard]] bool getEnableBackgroundZone() const
{
return enableBackgroundZone;
}
[[nodiscard]] bool getCreateGameAsSpectator() const
{
return createGameAsSpectator;
@ -1088,6 +1103,9 @@ public slots:
void setCreateGameAsSpectator(const bool _createGameAsSpectator);
void setDefaultStartingLifeTotal(const int _defaultStartingLifeTotal);
void setShareDecklistsOnLoad(const bool _shareDecklistsOnLoad);
void setEnableCommandZone(const bool _enableCommandZone);
void setEnableCompanionZone(const bool _enableCompanionZone);
void setEnableBackgroundZone(const bool _enableBackgroundZone);
void setRememberGameSettings(const bool _rememberGameSettings);
void setCheckUpdatesOnStartup(QT_STATE_CHANGED_T value);
void setStartupCardUpdateCheckPromptForUpdate(bool value);

View file

@ -422,6 +422,18 @@ private:
{"Player/aSetCounter_storm", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Set Other Counters..."),
parseSequenceString("Ctrl+\\"),
ShortcutGroup::Player_Counters)},
{"Player/aAddCommanderTax", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Add Commander Tax"),
parseSequenceString(""),
ShortcutGroup::Player_Counters)},
{"Player/aRemoveCommanderTax", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Remove Commander Tax"),
parseSequenceString(""),
ShortcutGroup::Player_Counters)},
{"Player/aAddPartnerTax", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Add Partner Tax"),
parseSequenceString(""),
ShortcutGroup::Player_Counters)},
{"Player/aRemovePartnerTax", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Remove Partner Tax"),
parseSequenceString(""),
ShortcutGroup::Player_Counters)},
{"Player/aIncrementAllCardCounters",
ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Increment all card counters"),
parseSequenceString("Ctrl+Shift+A"),
@ -560,6 +572,21 @@ private:
{"Player/aMoveToTopLibrary", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Top of Library"),
parseSequenceString(""),
ShortcutGroup::Move_selected)},
{"Player/aMoveToCommandZone", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Command Zone"),
parseSequenceString(""),
ShortcutGroup::Move_selected)},
{"Player/aMoveToPartnerZone", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Partner Zone"),
parseSequenceString(""),
ShortcutGroup::Move_selected)},
{"Player/aMoveToCompanionZone", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Companion Zone"),
parseSequenceString(""),
ShortcutGroup::Move_selected)},
{"Player/aMoveToBackgroundZone", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Background Zone"),
parseSequenceString(""),
ShortcutGroup::Move_selected)},
{"Player/aMoveToTable", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Battlefield"),
parseSequenceString(""),
ShortcutGroup::Move_selected)},
{"Player/aPlayFacedown", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Battlefield, Face Down"),
parseSequenceString(""),
ShortcutGroup::Move_selected)},
@ -586,6 +613,16 @@ private:
{"Player/aCloseMostRecentZoneView", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Close Recent View"),
parseSequenceString("Esc"),
ShortcutGroup::View)},
{"Player/aViewCommandZone",
ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Command Zone"), parseSequenceString(""), ShortcutGroup::View)},
{"Player/aViewPartnerZone",
ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Partner Zone"), parseSequenceString(""), ShortcutGroup::View)},
{"Player/aViewCompanionZone", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Companion Zone"),
parseSequenceString(""),
ShortcutGroup::View)},
{"Player/aViewBackgroundZone", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Background Zone"),
parseSequenceString(""),
ShortcutGroup::View)},
{"Player/aMoveTopToPlay", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Stack"),
parseSequenceString("Ctrl+Y"),
ShortcutGroup::Move_top)},
@ -715,6 +752,18 @@ private:
{"Player/aResetLayout", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Reset Layout"),
parseSequenceString(""),
ShortcutGroup::Game_window)},
{"Player/aTogglePartnerZoneVisibility",
ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Toggle Partner Zone Visibility"),
parseSequenceString(""),
ShortcutGroup::Game_window)},
{"Player/aToggleCompanionZoneVisibility",
ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Toggle Companion Zone Visibility"),
parseSequenceString(""),
ShortcutGroup::Game_window)},
{"Player/aToggleBackgroundZoneVisibility",
ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Toggle Background Zone Visibility"),
parseSequenceString(""),
ShortcutGroup::Game_window)},
{"DlgLoadDeckFromClipboard/refreshButton", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Refresh"),
parseSequenceString("F5"),
ShortcutGroup::Load_deck)},

View file

@ -6,20 +6,14 @@
#include "../board/translate_counter_name.h"
#include "../phase.h"
#include "../player/player.h"
#include "../zones/zone_names.h"
#include <../../client/settings/card_counter_settings.h>
#include <libcockatrice/common/counter_ids.h>
#include <libcockatrice/protocol/pb/context_move_card.pb.h>
#include <libcockatrice/protocol/pb/context_mulligan.pb.h>
#include <utility>
static const QString TABLE_ZONE_NAME = "table";
static const QString GRAVE_ZONE_NAME = "grave";
static const QString EXILE_ZONE_NAME = "rfg";
static const QString HAND_ZONE_NAME = "hand";
static const QString DECK_ZONE_NAME = "deck";
static const QString SIDEBOARD_ZONE_NAME = "sb";
static const QString STACK_ZONE_NAME = "stack";
static QString sanitizeHtml(QString dirty)
{
return dirty.replace("&", "&amp;").replace("<", "&lt;").replace(">", "&gt;").replace("\"", "&quot;");
@ -37,15 +31,15 @@ MessageLogWidget::getFromStr(CardZoneLogic *zone, QString cardName, int position
QString fromStr;
QString zoneName = zone->getName();
if (zoneName == TABLE_ZONE_NAME) {
if (zoneName == ZoneNames::TABLE) {
fromStr = tr(" from play");
} else if (zoneName == GRAVE_ZONE_NAME) {
} else if (zoneName == ZoneNames::GRAVE) {
fromStr = tr(" from their graveyard");
} else if (zoneName == EXILE_ZONE_NAME) {
} else if (zoneName == ZoneNames::EXILE) {
fromStr = tr(" from exile");
} else if (zoneName == HAND_ZONE_NAME) {
} else if (zoneName == ZoneNames::HAND) {
fromStr = tr(" from their hand");
} else if (zoneName == DECK_ZONE_NAME) {
} else if (zoneName == ZoneNames::DECK) {
if (position == 0) {
if (cardName.isEmpty()) {
if (ownerChange) {
@ -83,10 +77,18 @@ MessageLogWidget::getFromStr(CardZoneLogic *zone, QString cardName, int position
fromStr = tr(" from their library");
}
}
} else if (zoneName == SIDEBOARD_ZONE_NAME) {
} else if (zoneName == ZoneNames::SIDEBOARD) {
fromStr = tr(" from sideboard");
} else if (zoneName == STACK_ZONE_NAME) {
} else if (zoneName == ZoneNames::STACK) {
fromStr = tr(" from the stack");
} else if (zoneName == ZoneNames::COMMAND) {
fromStr = tr(" from the command zone");
} else if (zoneName == ZoneNames::PARTNER) {
fromStr = tr(" from the partner zone");
} else if (zoneName == ZoneNames::COMPANION) {
fromStr = tr(" from the companion zone");
} else if (zoneName == ZoneNames::BACKGROUND) {
fromStr = tr(" from the background zone");
} else {
fromStr = tr(" from custom zone '%1'").arg(zoneName);
}
@ -275,9 +277,9 @@ void MessageLogWidget::logMoveCard(Player *player,
bool ownerChanged = startZone->getPlayer() != targetZone->getPlayer();
// do not log if moved within the same zone
if ((startZoneName == TABLE_ZONE_NAME && targetZoneName == TABLE_ZONE_NAME && !ownerChanged) ||
(startZoneName == HAND_ZONE_NAME && targetZoneName == HAND_ZONE_NAME) ||
(startZoneName == EXILE_ZONE_NAME && targetZoneName == EXILE_ZONE_NAME)) {
if ((startZoneName == ZoneNames::TABLE && targetZoneName == ZoneNames::TABLE && !ownerChanged) ||
(startZoneName == ZoneNames::HAND && targetZoneName == ZoneNames::HAND) ||
(startZoneName == ZoneNames::EXILE && targetZoneName == ZoneNames::EXILE)) {
return;
}
@ -306,20 +308,20 @@ void MessageLogWidget::logMoveCard(Player *player,
QString finalStr;
std::optional<QString> fourthArg;
if (targetZoneName == TABLE_ZONE_NAME) {
if (targetZoneName == ZoneNames::TABLE) {
soundEngine->playSound("play_card");
if (card->getFaceDown()) {
finalStr = tr("%1 puts %2 into play%3 face down.");
} else {
finalStr = tr("%1 puts %2 into play%3.");
}
} else if (targetZoneName == GRAVE_ZONE_NAME) {
} else if (targetZoneName == ZoneNames::GRAVE) {
finalStr = tr("%1 puts %2%3 into their graveyard.");
} else if (targetZoneName == EXILE_ZONE_NAME) {
} else if (targetZoneName == ZoneNames::EXILE) {
finalStr = tr("%1 exiles %2%3.");
} else if (targetZoneName == HAND_ZONE_NAME) {
} else if (targetZoneName == ZoneNames::HAND) {
finalStr = tr("%1 moves %2%3 to their hand.");
} else if (targetZoneName == DECK_ZONE_NAME) {
} else if (targetZoneName == ZoneNames::DECK) {
if (newX == -1) {
finalStr = tr("%1 puts %2%3 into their library.");
} else if (newX >= targetZone->getCards().size()) {
@ -331,11 +333,19 @@ void MessageLogWidget::logMoveCard(Player *player,
fourthArg = QString::number(newX);
finalStr = tr("%1 puts %2%3 into their library %4 cards from the top.");
}
} else if (targetZoneName == SIDEBOARD_ZONE_NAME) {
} else if (targetZoneName == ZoneNames::SIDEBOARD) {
finalStr = tr("%1 moves %2%3 to sideboard.");
} else if (targetZoneName == STACK_ZONE_NAME) {
} else if (targetZoneName == ZoneNames::STACK) {
soundEngine->playSound("play_card");
finalStr = tr("%1 plays %2%3.");
} else if (targetZoneName == ZoneNames::COMMAND) {
finalStr = tr("%1 moves %2%3 to the command zone.");
} else if (targetZoneName == ZoneNames::PARTNER) {
finalStr = tr("%1 moves %2%3 to the partner zone.");
} else if (targetZoneName == ZoneNames::COMPANION) {
finalStr = tr("%1 moves %2%3 to the companion zone.");
} else if (targetZoneName == ZoneNames::BACKGROUND) {
finalStr = tr("%1 moves %2%3 to the background zone.");
} else {
fourthArg = targetZoneName;
finalStr = tr("%1 moves %2%3 to custom zone '%4'.");
@ -658,6 +668,20 @@ void MessageLogWidget::logSetCounter(Player *player, QString counterName, int va
}
QString counterDisplayName = TranslateCounterName::getDisplayName(counterName);
// Special format for commander/partner tax (manual player action)
if (counterName == CounterNames::CommanderTax || counterName == CounterNames::PartnerTax) {
appendHtmlServerMessage(
tr("%1 sets %2 counter to %3 (%4%5).")
.arg(sanitizeHtml(player->getPlayerInfo()->getName()))
.arg(QString("<font class=\"blue\">%1</font>").arg(sanitizeHtml(counterDisplayName)))
.arg(QString("<font class=\"blue\">%1</font>").arg(value))
.arg(value > oldValue ? "+" : "")
.arg(value - oldValue));
return;
}
// Generic counter format
appendHtmlServerMessage(tr("%1 sets counter %2 to %3 (%4%5).")
.arg(sanitizeHtml(player->getPlayerInfo()->getName()))
.arg(QString("<font class=\"blue\">%1</font>").arg(sanitizeHtml(counterDisplayName)))

View file

@ -25,10 +25,12 @@
#define PLAYERZONE_BG_NAME "playerzone"
#define STACKZONE_BG_NAME "stackzone"
#define TABLEZONE_BG_NAME "tablezone"
#define COMMANDZONE_BG_NAME "commandzone"
static const QColor HANDZONE_BG_DEFAULT = QColor(80, 100, 50);
static const QColor TABLEZONE_BG_DEFAULT = QColor(70, 50, 100);
static const QColor PLAYERZONE_BG_DEFAULT = QColor(200, 200, 200);
static const QColor STACKZONE_BG_DEFAULT = QColor(113, 43, 43);
static const QColor COMMANDZONE_BG_DEFAULT = QColor(75, 75, 120);
static const QStringList DEFAULT_RESOURCE_PATHS = {":/resources"};
struct PaletteColorInfo
@ -356,6 +358,7 @@ void ThemeManager::themeChangedSlot()
brushes[Role::Table] = TABLEZONE_BG_DEFAULT;
brushes[Role::Player] = PLAYERZONE_BG_DEFAULT;
brushes[Role::Stack] = STACKZONE_BG_DEFAULT;
brushes[Role::Command] = COMMANDZONE_BG_DEFAULT;
} else {
// resources
QStringList resources;
@ -368,6 +371,7 @@ void ThemeManager::themeChangedSlot()
brushes[Role::Table] = loadBrush(TABLEZONE_BG_NAME, TABLEZONE_BG_DEFAULT);
brushes[Role::Player] = loadBrush(PLAYERZONE_BG_NAME, PLAYERZONE_BG_DEFAULT);
brushes[Role::Stack] = loadBrush(STACKZONE_BG_NAME, STACKZONE_BG_DEFAULT);
brushes[Role::Command] = loadBrush(COMMANDZONE_BG_NAME, COMMANDZONE_BG_DEFAULT);
}
for (auto &brushCache : brushesCache) {
brushCache.clear();
@ -393,8 +397,12 @@ static QString roleBgName(ThemeManager::Role role)
case ThemeManager::Table:
return TABLEZONE_BG_NAME;
case ThemeManager::Command:
return COMMANDZONE_BG_NAME;
default:
Q_ASSERT(false);
return {};
}
}

View file

@ -36,7 +36,8 @@ public:
Stack,
Table,
Player,
MaxRole = Player,
Command,
MaxRole = Command,
};
private:

Binary file not shown.

After

Width:  |  Height:  |  Size: 220 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 141 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.2 KiB