Skip to content

Commit 1cca216

Browse files
committed
Default icon for extension.
1 parent b3a8752 commit 1cca216

File tree

1 file changed

+34
-1
lines changed

1 file changed

+34
-1
lines changed

src/settingsdialogextensionrow.cpp

Lines changed: 34 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,46 @@
44

55
using namespace MOBase;
66

7+
namespace
8+
{
9+
10+
const auto& defaultIcon()
11+
{
12+
static QIcon icon;
13+
14+
if (icon.isNull()) {
15+
const QImage baseIcon(":/MO/gui/app_icon");
16+
QImage grayIcon = baseIcon.convertToFormat(QImage::Format_ARGB32);
17+
{
18+
for (int y = 0; y < grayIcon.height(); ++y) {
19+
QRgb* scanLine = (QRgb*)grayIcon.scanLine(y);
20+
for (int x = 0; x < grayIcon.width(); ++x) {
21+
QRgb pixel = *scanLine;
22+
uint ci = uint(qGray(pixel));
23+
*scanLine = qRgba(ci, ci, ci, qAlpha(pixel) / 3);
24+
++scanLine;
25+
}
26+
}
27+
}
28+
icon = QIcon(QPixmap::fromImage(grayIcon));
29+
}
30+
31+
return icon;
32+
}
33+
34+
} // namespace
35+
736
ExtensionListItemWidget::ExtensionListItemWidget(const IExtension& extension)
837
: ui{new Ui::ExtensionListItemWidget()}, m_extension{&extension}
938
{
1039
ui->setupUi(this);
1140

41+
const auto& metadata = extension.metadata();
42+
43+
const auto& icon = metadata.icon().isNull() ? defaultIcon() : metadata.icon();
44+
1245
QIcon icon = style()->standardIcon(QStyle::SP_DialogOkButton);
13-
ui->extensionIcon->setPixmap(extension.metadata().icon().pixmap(QSize(48, 48)));
46+
ui->extensionIcon->setPixmap(icon.pixmap(QSize(48, 48)));
1447
ui->extensionName->setText(extension.metadata().name());
1548

1649
ui->extensionDescription->setText(extension.metadata().description());

0 commit comments

Comments
 (0)