From a7f19f7848f37087635c224b58205d8de3510520 Mon Sep 17 00:00:00 2001 From: Rob Blanckaert Date: Sun, 3 Mar 2019 02:24:10 -0800 Subject: [PATCH] Fix some dark mode colors. (#3596) * Pick a link color that looks good in both light and dark mode * Fix up chat log colors --- cockatrice/src/chatview/chatview.cpp | 26 +++++++++++++++++++------- cockatrice/src/chatview/chatview.h | 4 ++++ cockatrice/src/messagelogwidget.cpp | 24 ++++++++++++------------ cockatrice/src/tab_deck_editor.cpp | 4 ++++ 4 files changed, 39 insertions(+), 19 deletions(-) diff --git a/cockatrice/src/chatview/chatview.cpp b/cockatrice/src/chatview/chatview.cpp index f1bd772c..2d957f0e 100644 --- a/cockatrice/src/chatview/chatview.cpp +++ b/cockatrice/src/chatview/chatview.cpp @@ -13,8 +13,6 @@ #include const QColor DEFAULT_MENTION_COLOR = QColor(194, 31, 47); -const QColor OTHER_USER_COLOR = QColor(0, 65, 255); // dark blue -const QString SERVER_MESSAGE_COLOR = "#851515"; ChatView::ChatView(const TabSupervisor *_tabSupervisor, const UserlistProxy *_userlistProxy, @@ -24,7 +22,20 @@ ChatView::ChatView(const TabSupervisor *_tabSupervisor, : QTextBrowser(parent), tabSupervisor(_tabSupervisor), game(_game), userlistProxy(_userlistProxy), evenNumber(true), showTimestamps(_showTimestamps), hoveredItemType(HoveredNothing) { - document()->setDefaultStyleSheet("a { text-decoration: none; color: blue; }"); + if (palette().windowText().color().lightness() > 200) { + document()->setDefaultStyleSheet(R"( + a { text-decoration: none; color: rgb(71,158,252); } + .blue { color: rgb(71,158,252); } + )"); + serverMessageColor = QColor(0xFF, 0x73, 0x83); + otherUserColor = otherUserColor.lighter(150); + } else { + document()->setDefaultStyleSheet(R"( + a { text-decoration: none; color: blue; } + .blue { color: blue } + )"); + } + userContextMenu = new UserContextMenu(tabSupervisor, this, game); connect(userContextMenu, SIGNAL(openMessageDialog(QString, bool)), this, SIGNAL(openMessageDialog(QString, bool))); @@ -84,8 +95,9 @@ void ChatView::appendHtmlServerMessage(const QString &html, bool optionalIsBold, { bool atBottom = verticalScrollBar()->value() >= verticalScrollBar()->maximum(); - QString htmlText = "" + QDateTime::currentDateTime().toString("[hh:mm:ss] ") + html + ""; + QString htmlText = + "" + + QDateTime::currentDateTime().toString("[hh:mm:ss] ") + html + ""; if (optionalIsBold) htmlText = "" + htmlText + ""; @@ -142,7 +154,7 @@ void ChatView::appendMessage(QString message, // timestamp if (showTimestamps && (!sameSender || sender.toLower() == "servatrice") && !sender.isEmpty()) { QTextCharFormat timeFormat; - timeFormat.setForeground(QColor(SERVER_MESSAGE_COLOR)); + timeFormat.setForeground(serverMessageColor); if (sender.isEmpty()) timeFormat.setFontWeight(QFont::Bold); cursor.setCharFormat(timeFormat); @@ -156,7 +168,7 @@ void ChatView::appendMessage(QString message, senderFormat.setForeground(QBrush(getCustomMentionColor())); senderFormat.setFontWeight(QFont::Bold); } else { - senderFormat.setForeground(QBrush(OTHER_USER_COLOR)); + senderFormat.setForeground(QBrush(otherUserColor)); if (playerBold) senderFormat.setFontWeight(QFont::Bold); } diff --git a/cockatrice/src/chatview/chatview.h b/cockatrice/src/chatview/chatview.h index 38b560b1..af9839bd 100644 --- a/cockatrice/src/chatview/chatview.h +++ b/cockatrice/src/chatview/chatview.h @@ -59,6 +59,10 @@ private: void checkMention(QTextCursor &cursor, QString &message, QString &sender, UserLevelFlags userLevel); void checkWord(QTextCursor &cursor, QString &message); QString extractNextWord(QString &message, QString &rest); + + QColor otherUserColor = QColor(0, 65, 255); // dark blue + QColor serverMessageColor = QColor(0x85, 0x15, 0x15); + private slots: void openLink(const QUrl &link); void actMessageClicked(); diff --git a/cockatrice/src/messagelogwidget.cpp b/cockatrice/src/messagelogwidget.cpp index 59799ae0..14e705f1 100644 --- a/cockatrice/src/messagelogwidget.cpp +++ b/cockatrice/src/messagelogwidget.cpp @@ -263,7 +263,7 @@ void MessageLogWidget::logDeckSelect(Player *player, QString deckHash, int sideb else appendHtmlServerMessage(tr("%1 has loaded a deck with %2 sideboard cards (%3).") .arg(sanitizeHtml(player->getName())) - .arg("" + QString::number(sideboardSize) + "") + .arg("" + QString::number(sideboardSize) + "") .arg(deckHash)); } @@ -357,7 +357,7 @@ void MessageLogWidget::logDrawCards(Player *player, int number) soundEngine->playSound("draw_card"); appendHtmlServerMessage(tr("%1 draws %2 card(s).", "", number) .arg(sanitizeHtml(player->getName())) - .arg("" + QString::number(number) + "")); + .arg("" + QString::number(number) + "")); } } @@ -372,7 +372,7 @@ void MessageLogWidget::logDumpZone(Player *player, CardZone *zone, int numberCar tr("%1 is looking at the top %3 card(s) %2.", "top card for singular, top %3 cards for plural", numberCards) .arg(sanitizeHtml(player->getName())) .arg(zone->getTranslatedName(zone->getPlayer() == player, CaseTopCardsOfZone)) - .arg("" + QString::number(numberCards) + "")); + .arg("" + QString::number(numberCards) + "")); } void MessageLogWidget::logFlipCard(Player *player, QString cardName, bool faceDown) @@ -491,7 +491,7 @@ void MessageLogWidget::logRevealCards(Player *player, cardStr = tr("cards", "an unknown amount of cards"); } else { cardStr = tr("%1 card(s)", "a card for singular, %1 cards for plural", amount) - .arg("" + QString::number(amount) + ""); + .arg("" + QString::number(amount) + ""); } } else { cardStr = cardLink(cardName); @@ -548,12 +548,12 @@ void MessageLogWidget::logRollDie(Player *player, int sides, int roll) QString coinOptions[2] = {tr("Heads") + " (1)", tr("Tails") + " (2)"}; appendHtmlServerMessage(tr("%1 flipped a coin. It landed as %2.") .arg(sanitizeHtml(player->getName())) - .arg("" + coinOptions[roll - 1] + "")); + .arg("" + coinOptions[roll - 1] + "")); } else appendHtmlServerMessage(tr("%1 rolls a %2 with a %3-sided die.") .arg(sanitizeHtml(player->getName())) - .arg("" + QString::number(roll) + "") - .arg("" + QString::number(sides) + "")); + .arg("" + QString::number(roll) + "") + .arg("" + QString::number(sides) + "")); soundEngine->playSound("roll_dice"); } @@ -644,7 +644,7 @@ void MessageLogWidget::logSetAnnotation(Player *player, CardItem *card, QString QString(tr("%1 sets annotation of %2 to %3.")) .arg(sanitizeHtml(player->getName())) .arg(cardLink(card->getName())) - .arg(QString(""%1"").arg(sanitizeHtml(std::move(newAnnotation))))); + .arg(QString(""%1"").arg(sanitizeHtml(std::move(newAnnotation))))); } void MessageLogWidget::logSetCardCounter(Player *player, QString cardName, int counterId, int value, int oldValue) @@ -671,7 +671,7 @@ void MessageLogWidget::logSetCardCounter(Player *player, QString cardName, int c } appendHtmlServerMessage(finalStr.arg(sanitizeHtml(player->getName())) - .arg("" + QString::number(delta) + "") + .arg("" + QString::number(delta) + "") .arg(colorStr) .arg(cardLink(std::move(cardName))) .arg(value)); @@ -684,8 +684,8 @@ void MessageLogWidget::logSetCounter(Player *player, QString counterName, int va appendHtmlServerMessage(tr("%1 sets counter %2 to %3 (%4%5).") .arg(sanitizeHtml(player->getName())) - .arg(QString("%1").arg(sanitizeHtml(counterName))) - .arg(QString("%1").arg(value)) + .arg(QString("%1").arg(sanitizeHtml(counterName))) + .arg(QString("%1").arg(value)) .arg(value > oldValue ? "+" : "") .arg(value - oldValue)); } @@ -708,7 +708,7 @@ void MessageLogWidget::logSetPT(Player *player, CardItem *card, QString newPT) QString name = card->getName(); if (name.isEmpty()) { - name = QString("card #%1").arg(sanitizeHtml(QString::number(card->getId()))); + name = QString("card #%1").arg(sanitizeHtml(QString::number(card->getId()))); } else { name = cardLink(name); } diff --git a/cockatrice/src/tab_deck_editor.cpp b/cockatrice/src/tab_deck_editor.cpp index 743ef948..14b8344a 100644 --- a/cockatrice/src/tab_deck_editor.cpp +++ b/cockatrice/src/tab_deck_editor.cpp @@ -1244,6 +1244,10 @@ void TabDeckEditor::showSearchSyntaxHelp() browser->setWindowTitle("Search Help"); browser->setReadOnly(true); browser->setMinimumSize({500, 600}); + + QString sheet = QString("a { text-decoration: underline; color: rgb(71,158,252) };"); + browser->document()->setDefaultStyleSheet(sheet); + browser->setHtml(text); connect(browser, &QTextBrowser::anchorClicked, [=](QUrl link) { searchEdit->setText(link.fragment()); }); browser->show();