Add dark icon property

This commit is contained in:
GenevensiS
2025-12-05 13:36:09 +01:00
parent 039a9c5b34
commit 04a3289755
10 changed files with 118 additions and 84 deletions
+5 -4
View File
@@ -159,13 +159,13 @@ public:
PackageIconRequest(PackageUpdateList* list, PackageUpdateList::TreeItem* ti)
: ThumbnailRequest(
list,
_("package_") + ti->package->description->icon_url + _("_") + ti->package->description->version.toString(),
_("package_") + (settings.darkMode() && !ti->package->description->dark_icon_url.empty() ? ti->package->description->dark_icon_url : ti->package->description->icon_url) + _("_") + ti->package->description->version.toString(),
wxDateTime(1,wxDateTime::Jan,2000))
, list(list), ti(ti)
{}
Image generate() override {
wxURL url(ti->package->description->icon_url);
wxURL url(settings.darkMode() && !ti->package->description->dark_icon_url.empty() ? ti->package->description->dark_icon_url : ti->package->description->icon_url);
unique_ptr<wxInputStream> isP(url.GetInputStream());
if (!isP) return wxImage();
SeekAtStartInputStream is2(*isP);
@@ -219,8 +219,9 @@ void PackageUpdateList::initItems() {
if (p && p->description->icon.Ok()) { // it has an icon
ti.setIcon(p->description->icon);
} else if (p) { // it doesn't have an icon (yet)
ti.setIcon(load_resource_image(_("installer_package")));
if (!p->description->icon_url.empty()) {
ti.setIcon(load_resource_image(_("installer_package")));
String icon_url = settings.darkMode() && !p->description->dark_icon_url.empty() ? p->description->dark_icon_url : p->description->icon_url;
if (!icon_url.empty()) {
// download icon
thumbnail_thread.request(make_intrusive<PackageIconRequest>(this,&ti));
}
+13 -7
View File
@@ -228,13 +228,19 @@ void StatDimensionList::drawItem(DC& dc, int x, int y, size_t item) {
}
StatsDimension& dim = *dimensions.at(item - show_empty);
// draw icon
if (!dim.icon_filename.empty() && !dim.icon.Ok()) {
auto file = game->openIn(dim.icon_filename);
Image img(*file);
if (img.HasMask()) img.InitAlpha(); // we can't handle masks
Image resampled(21, 21);
resample_preserve_aspect(img, resampled);
if (img.Ok()) dim.icon = Bitmap(resampled);
if(!dim.icon.Ok()) {
String filename = dim.icon_filename;
if (settings.darkMode() && !dim.dark_icon_filename.empty()) {
filename = dim.dark_icon_filename;
}
if (!filename.empty()) {
auto file = game->openIn(filename);
Image img(*file);
if (img.HasMask()) img.InitAlpha(); // we can't handle masks
Image resampled(21, 21);
resample_preserve_aspect(img, resampled);
if (img.Ok()) dim.icon = Bitmap(resampled);
}
}
if (dim.icon.Ok()) {
dc.DrawBitmap(dim.icon, x+1, y+1);