22 #include <kapplication.h>
23 #include <kiconloader.h>
24 #include <kmimetype.h>
26 #include <kprotocolinfo.h>
28 #include "konq_pixmapprovider.h"
30 KonqPixmapProvider * KonqPixmapProvider::s_self = 0L;
32 KonqPixmapProvider * KonqPixmapProvider::self()
35 s_self =
new KonqPixmapProvider( TQT_TQOBJECT(kapp),
"KonqPixmapProvider" );
40 KonqPixmapProvider::KonqPixmapProvider( TQObject *parent,
const char *name )
46 KonqPixmapProvider::~KonqPixmapProvider()
55 TQString KonqPixmapProvider::iconNameFor(
const TQString& url )
57 TQMapIterator<TQString,TQString> it = iconMap.find( url );
59 if ( it != iconMap.end() ) {
61 if ( !icon.isEmpty() )
65 if ( url.isEmpty() ) {
67 icon = KMimeType::mimeType(
"inode/directory" )->KServiceType::icon();
68 Q_ASSERT( !icon.isEmpty() );
73 if ( url.at(0) ==
'~' )
74 u.setPath( KShell::tildeExpand( url ) );
75 else if ( url.at(0) ==
'/' )
80 icon = KMimeType::iconForURL( u );
86 iconMap.insert( url, icon );
91 TQPixmap KonqPixmapProvider::pixmapFor(
const TQString& url,
int size )
93 return loadIcon( url, iconNameFor( url ), size );
96 void KonqPixmapProvider::load( KConfig *kc,
const TQString& key )
100 list = kc->readPathListEntry( key );
101 TQStringList::Iterator it = list.begin();
103 while ( it != list.end() ) {
105 if ( ++it == list.end() )
108 iconMap.insert( url, icon );
116 void KonqPixmapProvider::save( KConfig *kc,
const TQString& key,
117 const TQStringList& items )
120 TQStringList::ConstIterator it = items.begin();
121 TQMapConstIterator<TQString,TQString> mit;
122 while ( it != items.end() ) {
123 mit = iconMap.find( *it );
124 if ( mit != iconMap.end() ) {
125 list.append( mit.key() );
126 list.append( mit.data() );
131 kc->writePathEntry( key, list );
134 void KonqPixmapProvider::notifyChange(
bool isHost, TQString hostOrURL,
137 for ( TQMapIterator<TQString,TQString> it = iconMap.begin();
141 KURL url( it.key() );
142 if ( url.protocol().startsWith(
"http") &&
143 ( ( isHost && url.host() == hostOrURL ) ||
144 ( url.host() + url.path() == hostOrURL ) ) )
148 TQString icon = isHost ? KMimeType::favIconForURL( url ) : iconName;
149 if ( !icon.isEmpty() )
157 void KonqPixmapProvider::clear()
162 TQPixmap KonqPixmapProvider::loadIcon(
const TQString& url,
const TQString& icon,
165 if ( size <= KIcon::SizeSmall )
166 return SmallIcon( icon, size );
169 if ( url.at(0) ==
'/' )
177 if ( url.startsWith(
"http:/" ) && icon.startsWith(
"favicons/") ) {
178 TQPixmap small = SmallIcon( icon, size );
179 big = KGlobal::iconLoader()->loadIcon( KProtocolInfo::icon(
"http"),
180 KIcon::Panel, size );
182 int x = big.width() - small.width();
186 TQBitmap mask = *big.mask();
188 small.mask() ? TQT_TQPIXMAP(const_cast<TQBitmap *>(small.mask())) : &small, 0, 0,
189 small.width(), small.height(),
190 small.mask() ? OrROP : SetROP );
194 bitBlt( &big, x, y, &small );
198 big = KGlobal::iconLoader()->loadIcon( icon, KIcon::Panel, size );