From 76728dfed94959a15a1327aca254e3fbd41ae07a Mon Sep 17 00:00:00 2001 From: twanvl Date: Sat, 9 Aug 2008 00:39:06 +0000 Subject: [PATCH] Package icons will be loaded from installers if possible git-svn-id: svn://svn.code.sf.net/p/magicseteditor/code/trunk@1114 0fc631ac-6414-0410-93d0-97cfa31319b6 --- src/data/installer.cpp | 20 +++++++++++++++++++- src/data/installer.hpp | 5 +++-- src/gui/package_update_list.cpp | 1 + 3 files changed, 23 insertions(+), 3 deletions(-) diff --git a/src/data/installer.cpp b/src/data/installer.cpp index 14b61012..201e0aa9 100644 --- a/src/data/installer.cpp +++ b/src/data/installer.cpp @@ -42,6 +42,24 @@ IMPLEMENT_REFLECTION(Installer) { REFLECT(packages); } +void Installer::validate(Version file_app_version) { + Packaged::validate(file_app_version); + // load icons where possible + FOR_EACH(p,packages) { + if (!p->icon_url.empty() && !starts_with(p->icon_url,_("http:"))) { + // TODO: support absolute icon names + try{ + String filename = p->name + _("/") + p->icon_url; + InputStreamP img = openIn(p->name + _("/") + p->icon_url); + p->icon.LoadFile(*img); + } catch (...) { + // ignore errors, it's just an image + p->icon_url.clear(); + } + } + } +} + #if 0 // ----------------------------------------------------------------------------- : Installing @@ -191,7 +209,7 @@ PackageDescription::PackageDescription(const Packaged& package) , version(package.version) , short_name(package.short_name) , full_name(package.full_name) - , icon_url(_("")) + , icon_url(package.icon_filename) , installer_group(package.installer_group) , position_hint(package.position_hint) //, description(package.description) diff --git a/src/data/installer.hpp b/src/data/installer.hpp index 09b8a44b..2ee9c2dc 100644 --- a/src/data/installer.hpp +++ b/src/data/installer.hpp @@ -44,8 +44,9 @@ class Installer : public Packaged { void addPackage(Packaged& package); protected: - String typeName() const; - Version fileVersion() const; + virtual String typeName() const; + virtual Version fileVersion() const; + virtual void validate(Version file_app_version); DECLARE_REFLECTION(); }; diff --git a/src/gui/package_update_list.cpp b/src/gui/package_update_list.cpp index 9c3867c3..f7def39a 100644 --- a/src/gui/package_update_list.cpp +++ b/src/gui/package_update_list.cpp @@ -158,6 +158,7 @@ class SeekAtStartInputStream : public wxFilterInputStream { Byte buffer[1024]; }; +/// Retrieve the icon for a package class PackageIconRequest : public ThumbnailRequest { public: PackageIconRequest(PackageUpdateList* list, PackageUpdateList::TreeItem* ti)