31 #include <QtCore/QHashIterator>
32 #include <QtCore/QStringBuilder>
33 #include <QtNetwork/QHostInfo>
34 #include <QtNetwork/QHostAddress>
47 iconName = KMimeType::favIconForUrl(url);
48 if (iconName.isEmpty())
49 iconName = KMimeType::iconNameForUrl( url );
56 iconName = KMimeType::iconNameForUrl( url );
62 exeName = exeName.mid( exeName.lastIndexOf(
'/' ) + 1 );
64 if (service && service->
icon() != QLatin1String(
"unknown" ))
65 iconName = service->
icon();
72 iconName = QLatin1String(
"system-run");
77 iconName = QLatin1String(
"khelpcenter");
82 iconName = QLatin1String(
"konsole");
88 iconName = QLatin1String(
"error");
99 class KUriFilterSearchProvider::KUriFilterSearchProviderPrivate
102 KUriFilterSearchProviderPrivate() {}
103 KUriFilterSearchProviderPrivate(
const KUriFilterSearchProviderPrivate& other)
133 return d->desktopEntryName;
153 if (d->keys.isEmpty())
156 return d->keys.first();
161 d->desktopEntryName = other.d->desktopEntryName;
162 d->iconName = other.d->iconName;
163 d->keys = other.d->keys;
164 d->name = other.d->name;
188 class KUriFilterDataPrivate
191 explicit KUriFilterDataPrivate(
const KUrl& u,
const QString& typedUrl )
192 : checkForExecs(true),
197 typedString(typedUrl)
201 ~KUriFilterDataPrivate()
203 qDeleteAll(searchProviderMap.begin(), searchProviderMap.end());
206 void setData(
const KUrl& u,
const QString& typedUrl )
208 checkForExecs =
true;
214 typedString = typedUrl;
221 searchProvider.clear();
222 searchTermSeparator = QChar();
223 alternateDefaultSearchProvider.clear();
224 alternateSearchProviders.clear();
225 searchProviderMap.clear();
226 defaultUrlScheme.clear();
229 KUriFilterDataPrivate( KUriFilterDataPrivate * data )
231 wasModified = data->wasModified;
232 checkForExecs = data->checkForExecs;
233 uriType = data->uriType;
234 searchFilterOptions = data->searchFilterOptions;
237 typedString = data->typedString;
239 errMsg = data->errMsg;
240 iconName = data->iconName;
241 absPath = data->absPath;
243 searchTerm = data->searchTerm;
244 searchTermSeparator = data->searchTermSeparator;
245 searchProvider = data->searchProvider;
246 alternateDefaultSearchProvider = data->alternateDefaultSearchProvider;
247 alternateSearchProviders = data->alternateSearchProviders;
248 searchProviderMap = data->searchProviderMap;
249 defaultUrlScheme = data->defaultUrlScheme;
255 KUriFilterData::SearchFilterOptions searchFilterOptions;
265 QString alternateDefaultSearchProvider;
267 QChar searchTermSeparator;
275 :d( new KUriFilterDataPrivate(
KUrl(),
QString() ) )
280 :d( new KUriFilterDataPrivate( url, url.url() ) )
285 :d( new KUriFilterDataPrivate(
KUrl(url), url ) )
291 :d( new KUriFilterDataPrivate( other.d ) )
322 return !d->absPath.isEmpty();
332 return !d->args.isEmpty();
337 return d->checkForExecs;
342 return d->typedString;
347 return d->searchTerm;
352 return d->searchTermSeparator;
357 return d->searchProvider;
362 return d->searchProviderList;
387 return searchProvider->
keys();
401 return d->alternateSearchProviders;
406 return d->alternateDefaultSearchProvider;
411 return d->defaultUrlScheme;
416 return d->searchFilterOptions;
421 if (d->wasModified) {
423 d->wasModified =
false;
431 d->setData(url, url.
url());
436 d->setData(
KUrl(url), url);
443 if( (d->url.protocol().isEmpty() || d->url.isLocalFile()) )
445 d->absPath = absPath;
453 d->checkForExecs = check;
458 d->alternateSearchProviders = providers;
463 d->alternateDefaultSearchProvider = provider;
468 d->defaultUrlScheme = scheme;
473 d->searchFilterOptions = options;
478 d->setData(url, url.
url());
484 d->setData(
KUrl(url), url);
493 setObjectName( name );
509 data.d->wasModified =
true;
510 kDebug(7022) <<
"Got filtered to:" << uri;
516 data.d->errMsg = errmsg;
522 data.d->uriType = type;
523 data.d->wasModified =
true;
533 const QString &term,
const QChar &separator)
const
535 data.d->searchProvider = provider;
536 data.d->searchTerm = term;
537 data.d->searchTermSeparator = separator;
540 #ifndef KDE_NO_DEPRECATED
543 QHashIterator<QString, QPair<QString, QString> > it (providers);
548 searchProvider->
setName(it.key());
551 const QStringList queries = it.value().first.split(QLatin1Char(
','));
552 Q_FOREACH(
const QString& query, queries)
553 keys << query.left(query.indexOf(data.d->searchTermSeparator));
562 data.d->searchProviderList << searchProvider->
name();
563 data.d->searchProviderMap.insert(searchProvider->
name(), searchProvider);
580 class KUriFilterPrivate
583 KUriFilterPrivate() {}
602 : d(new KUriFilterPrivate())
614 bool filtered =
false;
618 if( filters.isEmpty() ) {
619 QStringListIterator it (d->pluginNames);
620 while (it.hasNext()) {
626 QStringListIterator it (filters);
627 while (it.hasNext()) {
640 bool filtered =
filterUri( data, filters );
641 if( filtered ) uri = data.
uri();
648 bool filtered =
filterUri( data, filters );
649 if( filtered ) uri = data.
uri().
url();
667 #ifndef KDE_NO_DEPRECATED
679 filters <<
"kurisearchfilter";
682 filters <<
"kuriikwsfilter";
690 return d->pluginNames;
703 const QString& pluginName = plugin->objectName();
704 Q_ASSERT( !pluginName.isEmpty() );
705 d->plugins.insert(pluginName, plugin );
709 d->pluginNames << pluginName;
714 #include "kurifilter.moc"