2025-03-29 00:13:10 +01:00
|
|
|
#include <QSize>
|
|
|
|
|
#include <QPainter>
|
|
|
|
|
#include "qt_iconindicators.hpp"
|
|
|
|
|
|
|
|
|
|
QIcon
|
|
|
|
|
getIndicatorIcon(IconIndicator indicator)
|
|
|
|
|
{
|
|
|
|
|
switch (indicator) {
|
|
|
|
|
case Active:
|
|
|
|
|
return QIcon(":/settings/qt/icons/active.ico");
|
2025-04-22 17:37:00 +06:00
|
|
|
case WriteActive:
|
|
|
|
|
return QIcon(":/settings/qt/icons/write_active.ico");
|
2025-03-29 00:13:10 +01:00
|
|
|
case Disabled:
|
|
|
|
|
return QIcon(":/settings/qt/icons/disabled.ico");
|
2025-07-21 01:20:54 +06:00
|
|
|
case WriteProtected:
|
|
|
|
|
return QIcon(":/settings/qt/icons/write_protected.ico");
|
2025-03-29 00:13:10 +01:00
|
|
|
default:
|
|
|
|
|
return QIcon();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
QPixmap
|
|
|
|
|
getIconWithIndicator(const QIcon &icon, const QSize &size, QIcon::Mode iconMode, IconIndicator indicator)
|
|
|
|
|
{
|
|
|
|
|
auto iconPixmap = icon.pixmap(size, iconMode);
|
|
|
|
|
|
|
|
|
|
if (indicator == None)
|
|
|
|
|
return iconPixmap;
|
|
|
|
|
|
|
|
|
|
auto painter = QPainter(&iconPixmap);
|
2025-07-21 01:20:54 +06:00
|
|
|
auto indicatorPixmap = getIndicatorIcon((indicator == ReadWriteActive || indicator == WriteProtectedActive) ? Active : indicator).pixmap(size);
|
2025-03-29 00:13:10 +01:00
|
|
|
|
|
|
|
|
painter.drawPixmap(0, 0, indicatorPixmap);
|
2025-07-21 01:20:54 +06:00
|
|
|
if (indicator == ReadWriteActive || indicator == WriteProtectedActive) {
|
|
|
|
|
auto writeIndicatorPixmap = getIndicatorIcon(indicator == WriteProtectedActive ? WriteProtected : WriteActive).pixmap(size);
|
2025-04-22 17:37:00 +06:00
|
|
|
painter.drawPixmap(0, 0, writeIndicatorPixmap);
|
|
|
|
|
}
|
2025-03-29 00:13:10 +01:00
|
|
|
painter.end();
|
|
|
|
|
|
|
|
|
|
return iconPixmap;
|
|
|
|
|
}
|