Add icon request ability

pull/16/head
Timothy Pearson 12 years ago
parent c5bca102dd
commit 6d74bae8a1

@ -41,34 +41,6 @@ typedef unsigned long uint32_t;
typedef unsigned short uint16_t;
#endif
TQString elf_get_resource(libr_file *handle, char *section_name)
{
size_t buffer_size = 0;
char *buffer = NULL;
TQString result;
/* Get the resource from the ELF binary */
if(!libr_size(handle, section_name, &buffer_size))
{
kdWarning() << "failed to obtain ELF resource size: " << libr_errmsg() << endl;
return result;
}
/* Get the resource from the ELF file */
buffer = (char *) malloc(buffer_size+1);
buffer[buffer_size] = 0;
if(!libr_read(handle, section_name, buffer))
{
kdWarning() << "failed to obtain ELF resource: " << libr_errmsg() << endl;
goto fail;
}
result = buffer;
fail:
free(buffer);
return result;
}
typedef KGenericFactory<KElfPlugin> ElfFactory;
K_EXPORT_COMPONENT_FACTORY(kfile_elf, ElfFactory( "kfile_elf" ))
@ -96,7 +68,7 @@ KElfPlugin::KElfPlugin(TQObject *parent, const char *name,
item = addItemInfo(group, "Product", i18n("Product"), TQVariant::String);
item = addItemInfo(group, "Organization", i18n("Organization"), TQVariant::String);
item = addItemInfo(group, "Version", i18n("Version"), TQVariant::String);
item = addItemInfo(group, "DateTime", i18n("Creation Date/Time"), TQVariant::String);
item = addItemInfo(group, "DateTime", i18n("Compilation Date/Time"), TQVariant::String);
item = addItemInfo(group, "SystemIcon", i18n("Requested Icon"), TQVariant::String);
item = addItemInfo(group, "Notes", i18n("Comments"), TQVariant::String);

@ -671,8 +671,10 @@ TQPixmap KFileItem::pixmap( int _size, int _state ) const
// See if there is a system icon we can use
TQString sysIconName = elf_get_resource(handle, ".metadata_sysicon");
if (KGlobal::iconLoader()->iconPath(sysIconName.ascii(), 0, true) != "") {
p = DesktopIcon( sysIconName.ascii(), _size, _state );
if (!sysIconName.isEmpty()) {
if (KGlobal::iconLoader()->iconPath(sysIconName.ascii(), 0, true) != "") {
p = DesktopIcon( sysIconName.ascii(), _size, _state );
}
}
libr_close(handle);
@ -694,7 +696,7 @@ TQPixmap KFileItem::pixmap( int _size, int _state ) const
}
}
if (iconresnamefound == 0) {
if ((iconresnamefound == 0) && (icon)) {
// Extract the embedded icon
size_t icon_data_length;
char* icondata = libr_icon_malloc(icon, &icon_data_length);

@ -195,7 +195,7 @@ TQString KURIFilterData::iconName()
libr_file *handle = NULL;
libr_access_t access = LIBR_READ;
char libr_can_continue = 1;
if((handle = libr_open(const_cast<char*>(m_pURI.path().ascii()), access)) == NULL)
{
kdWarning() << "failed to open file" << m_pURI.path() << endl;
@ -219,8 +219,10 @@ TQString KURIFilterData::iconName()
// See if there is a system icon we can use
TQString sysIconName = elf_get_resource(handle, ".metadata_sysicon");
if (KGlobal::iconLoader()->iconPath(sysIconName.ascii(), 0, true) != "") {
m_customIconPixmap = DesktopIcon( sysIconName.ascii(), _size, _state );
if (!sysIconName.isEmpty()) {
if (KGlobal::iconLoader()->iconPath(sysIconName.ascii(), 0, true) != "") {
m_strIconName = sysIconName;
}
}
libr_close(handle);
@ -241,8 +243,8 @@ TQString KURIFilterData::iconName()
}
}
}
if (iconresnamefound == 0) {
if ((iconresnamefound == 0) && (icon)) {
// Extract the embedded icon
size_t icon_data_length;
char* icondata = libr_icon_malloc(icon, &icon_data_length);
@ -255,7 +257,7 @@ TQString KURIFilterData::iconName()
free(icondata);
libr_icon_close(icon);
}
libr_close(handle);
}
}

@ -69,7 +69,7 @@ TQString elf_get_resource(libr_file *handle, char *section_name)
/* Get the resource from the ELF binary */
if(!libr_size(handle, section_name, &buffer_size))
{
kdWarning() << "failed to obtain ELF resource size: " << libr_errmsg() << endl;
// kdWarning() << "failed to obtain ELF resource size: " << libr_errmsg() << endl;
return result;
}
/* Get the resource from the ELF file */
@ -77,7 +77,7 @@ TQString elf_get_resource(libr_file *handle, char *section_name)
buffer[buffer_size] = 0;
if(!libr_read(handle, section_name, buffer))
{
kdWarning() << "failed to obtain ELF resource: " << libr_errmsg() << endl;
// kdWarning() << "failed to obtain ELF resource: " << libr_errmsg() << endl;
goto fail;
}
result = buffer;
@ -86,4 +86,4 @@ fail:
free(buffer);
return result;
}
}

@ -496,7 +496,7 @@ int main_console(int argc, char **argv)
} break;
case MODE_SET_EMPTY_UUID:
section = ICON_SECTION;
clear_resource(handle, section);
clear_resource(handle, section);
if(!libr_icon_setuuid(handle, "00000000-0000-0000-0000-000000000000"))
{
@ -549,6 +549,8 @@ int main_console(int argc, char **argv)
if (systemIcon.isNull()) {
systemIcon = KGlobal::iconLoader()->iconPath(argv[PARAM_ICON_NAME], 0, false);
printf("NOT FOUND, refusing to add unknown icon (this message is harmless)\n\r");
section = ICON_SECTION;
clear_resource(handle, section);
goto fail;
}
else {

Loading…
Cancel
Save