From 6d74bae8a11865d0d3d373781de6cc95682f5cc4 Mon Sep 17 00:00:00 2001 From: Timothy Pearson Date: Mon, 2 Jan 2012 10:13:06 -0600 Subject: [PATCH] Add icon request ability --- kfile-plugins/elf/kfile_elf.cpp | 30 +----------------------------- kio/kio/kfileitem.cpp | 8 +++++--- kio/kio/kurifilter.cpp | 14 ++++++++------ kio/kio/tdelficon.cpp | 6 +++--- tdelfeditor/tdelfeditor.cpp | 4 +++- 5 files changed, 20 insertions(+), 42 deletions(-) diff --git a/kfile-plugins/elf/kfile_elf.cpp b/kfile-plugins/elf/kfile_elf.cpp index a26a6804b..2357f0617 100644 --- a/kfile-plugins/elf/kfile_elf.cpp +++ b/kfile-plugins/elf/kfile_elf.cpp @@ -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 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); diff --git a/kio/kio/kfileitem.cpp b/kio/kio/kfileitem.cpp index efb59043b..cf903f712 100644 --- a/kio/kio/kfileitem.cpp +++ b/kio/kio/kfileitem.cpp @@ -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); diff --git a/kio/kio/kurifilter.cpp b/kio/kio/kurifilter.cpp index 24ed48328..42840a588 100644 --- a/kio/kio/kurifilter.cpp +++ b/kio/kio/kurifilter.cpp @@ -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(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); } } diff --git a/kio/kio/tdelficon.cpp b/kio/kio/tdelficon.cpp index 6e1e68169..49ceffd24 100644 --- a/kio/kio/tdelficon.cpp +++ b/kio/kio/tdelficon.cpp @@ -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; -} \ No newline at end of file +} diff --git a/tdelfeditor/tdelfeditor.cpp b/tdelfeditor/tdelfeditor.cpp index 4515474c6..a3ba789c5 100644 --- a/tdelfeditor/tdelfeditor.cpp +++ b/tdelfeditor/tdelfeditor.cpp @@ -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 {