24 #include <kiconloader.h>
26 #include <kmimetype.h>
27 #include <klibloader.h>
28 #include <kstaticdeleter.h>
29 #include <kparts/componentfactory.h>
31 #include "kurifilter.h"
33 template class TQPtrList<KURIFilterPlugin>;
36 :TQObject( parent, name )
38 m_strName = TQString::fromLatin1( name );
44 if ( data.
uri() != uri )
47 data.m_bChanged =
true;
51 class KURIFilterDataPrivate
54 KURIFilterDataPrivate() {};
62 m_iType = data.m_iType;
64 m_strErrMsg = data.m_strErrMsg;
65 m_strIconName = data.m_strIconName;
66 m_bChanged = data.m_bChanged;
67 m_bCheckForExecutables = data.m_bCheckForExecutables;
68 d =
new KURIFilterDataPrivate;
82 m_iType = KURIFilterData::UNKNOWN;
84 m_strErrMsg = TQString::null;
85 m_strIconName = TQString::null;
86 m_bCheckForExecutables =
true;
88 d =
new KURIFilterDataPrivate;
89 d->typedString = url.url();
94 m_iType = KURIFilterData::UNKNOWN;
96 m_strErrMsg = TQString::null;
97 m_strIconName = TQString::null;
98 m_bCheckForExecutables =
true;
100 d =
new KURIFilterDataPrivate;
101 d->typedString = url;
104 void KURIFilterData::reinit(
const KURL &url)
110 void KURIFilterData::reinit(
const TQString &url)
118 return d->typedString;
123 m_bCheckForExecutables = check;
128 return !d->args.isEmpty();
133 return !d->abs_path.isEmpty();
140 if( (!m_pURI.isValid() || m_pURI.isLocalFile()) )
142 d->abs_path = absPath;
164 case KURIFilterData::LOCAL_FILE:
165 case KURIFilterData::LOCAL_DIR:
166 case KURIFilterData::NET_PROTOCOL:
171 case KURIFilterData::EXECUTABLE:
173 TQString exeName = m_pURI.url();
174 exeName = exeName.mid( exeName.findRev(
'/' ) + 1 );
176 if (service && service->icon() != TQString::fromLatin1(
"unknown" ))
177 m_strIconName = service->icon();
179 else if ( !KGlobal::iconLoader()->loadIcon( exeName, KIcon::NoGroup, 16, KIcon::DefaultState, 0,
true ).isNull() )
180 m_strIconName = exeName;
183 m_strIconName = TQString::fromLatin1(
"exec");
186 case KURIFilterData::HELP:
188 m_strIconName = TQString::fromLatin1(
"khelpcenter");
191 case KURIFilterData::SHELL:
193 m_strIconName = TQString::fromLatin1(
"konsole");
196 case KURIFilterData::ERROR:
197 case KURIFilterData::BLOCKED:
199 m_strIconName = TQString::fromLatin1(
"error");
203 m_strIconName = TQString::null;
208 return m_strIconName;
219 static KStaticDeleter<KURIFilter> kurifiltersd;
224 s_self = kurifiltersd.setObject(s_self,
new KURIFilter);
230 m_lstPlugins.setAutoDelete(
true);
240 bool filtered =
false;
245 if( filters.isEmpty() )
246 use_plugins = m_lstPlugins;
250 for( TQStringList::ConstIterator lst = filters.begin(); lst != filters.end(); ++lst )
252 TQPtrListIterator<KURIFilterPlugin> it( m_lstPlugins );
253 for( ; it.current() ; ++it )
255 if( (*lst) == it.current()->name() )
258 use_plugins.append( it.current() );
265 TQPtrListIterator<KURIFilterPlugin> it( use_plugins );
268 for (; it.current() && !filtered; ++it)
271 filtered |= it.current()->filterURI( data );
279 bool filtered =
filterURI( data, filters );
280 if( filtered ) uri = data.
uri();
287 bool filtered =
filterURI( data, filters );
288 if( filtered ) uri = data.
uri().url();
304 return data.
uri().url();
309 return TQPtrListIterator<KURIFilterPlugin>(m_lstPlugins);
315 for(TQPtrListIterator<KURIFilterPlugin> i =
pluginsIterator(); *i; ++i)
316 list.append((*i)->name());
324 KTrader::OfferList::ConstIterator it = offers.begin();
325 KTrader::OfferList::ConstIterator end = offers.end();
327 for (; it != end; ++it )
329 KURIFilterPlugin *plugin = KParts::ComponentFactory::createInstanceFromService<KURIFilterPlugin>( *it, 0, (*it)->desktopEntryName().latin1() );
331 m_lstPlugins.append( plugin );
341 void KURIFilterPlugin::virtual_hook(
int,
void* )
344 #include "kurifilter.moc"