Implement Caps Lock warning

This commit is contained in:
Janek Bevendorff
2019-10-21 10:49:09 +02:00
parent 596d2cf425
commit d9214db404
12 changed files with 122 additions and 22 deletions

View File

@@ -115,11 +115,11 @@ QIcon Resources::trayIconUnlocked()
return useDarkIcon() ? icon("keepassxc-dark", false) : icon("keepassxc-unlocked", false);
}
QIcon Resources::icon(const QString& name, bool recolor)
QIcon Resources::icon(const QString& name, bool recolor, const QColor& overrideColor)
{
QIcon icon = m_iconCache.value(name);
if (!icon.isNull()) {
if (!icon.isNull() && !overrideColor.isValid()) {
return icon;
}
@@ -128,28 +128,36 @@ QIcon Resources::icon(const QString& name, bool recolor)
QImage img = icon.pixmap(128, 128).toImage().convertToFormat(QImage::Format_ARGB32_Premultiplied);
icon = {};
QPalette palette = getMainWindow()->palette();
QPainter painter(&img);
painter.setCompositionMode(QPainter::CompositionMode_SourceAtop);
painter.fillRect(0, 0, img.width(), img.height(), palette.color(QPalette::Normal, QPalette::WindowText));
icon.addPixmap(QPixmap::fromImage(img), QIcon::Normal);
if (!overrideColor.isValid()) {
QPalette palette = getMainWindow()->palette();
painter.fillRect(0, 0, img.width(), img.height(), palette.color(QPalette::Normal, QPalette::WindowText));
icon.addPixmap(QPixmap::fromImage(img), QIcon::Normal);
painter.fillRect(0, 0, img.width(), img.height(), palette.color(QPalette::Active, QPalette::ButtonText));
icon.addPixmap(QPixmap::fromImage(img), QIcon::Active);
painter.fillRect(0, 0, img.width(), img.height(), palette.color(QPalette::Active, QPalette::ButtonText));
icon.addPixmap(QPixmap::fromImage(img), QIcon::Active);
painter.fillRect(0, 0, img.width(), img.height(), palette.color(QPalette::Active, QPalette::HighlightedText));
icon.addPixmap(QPixmap::fromImage(img), QIcon::Selected);
painter.fillRect(
0, 0, img.width(), img.height(), palette.color(QPalette::Active, QPalette::HighlightedText));
icon.addPixmap(QPixmap::fromImage(img), QIcon::Selected);
painter.fillRect(0, 0, img.width(), img.height(), palette.color(QPalette::Disabled, QPalette::WindowText));
icon.addPixmap(QPixmap::fromImage(img), QIcon::Disabled);
painter.fillRect(0, 0, img.width(), img.height(), palette.color(QPalette::Disabled, QPalette::WindowText));
icon.addPixmap(QPixmap::fromImage(img), QIcon::Disabled);
} else {
painter.fillRect(0, 0, img.width(), img.height(), overrideColor);
icon.addPixmap(QPixmap::fromImage(img), QIcon::Normal);
}
#if QT_VERSION >= QT_VERSION_CHECK(5, 6, 0)
icon.setIsMask(true);
#endif
}
m_iconCache.insert(name, icon);
if (!overrideColor.isValid()) {
m_iconCache.insert(name, icon);
}
return icon;
}

View File

@@ -19,6 +19,7 @@
#ifndef KEEPASSX_RESOURCES_H
#define KEEPASSX_RESOURCES_H
#include <QColor>
#include <QHash>
#include <QIcon>
#include <QString>
@@ -33,7 +34,7 @@ public:
QIcon trayIcon();
QIcon trayIconLocked();
QIcon trayIconUnlocked();
QIcon icon(const QString& name, bool recolor = true);
QIcon icon(const QString& name, bool recolor = true, const QColor& overrideColor = QColor::Invalid);
QIcon onOffIcon(const QString& name, bool recolor = true);
static Resources* instance();