kurifilter.h
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef __kurifilter_h__
00022 #define __kurifilter_h__ "$Id: kurifilter.h,v 1.27 2002/10/30 09:37:39 neil Exp $"
00023
00024 #include <qptrlist.h>
00025 #include <qobject.h>
00026
00027 #include <kurl.h>
00028
00029 class KURIFilterPrivate;
00030 class KURIFilterDataPrivate;
00031
00032 class QStringList;
00033 class KCModule;
00034
00064 class KURIFilterData
00065 {
00066 friend class KURIFilterPlugin;
00067
00068 public:
00087 enum URITypes { NET_PROTOCOL=0, LOCAL_FILE, LOCAL_DIR, EXECUTABLE, HELP, SHELL, BLOCKED, ERROR, UNKNOWN };
00088
00094 KURIFilterData() { init(); }
00095
00101 KURIFilterData( const KURL& url ) { init( url); }
00102
00108 KURIFilterData( const QString& url ) { init( url ); }
00109
00118 KURIFilterData( const KURIFilterData& );
00119
00123 ~KURIFilterData();
00124
00132 bool hasBeenFiltered() const { return m_bFiltered; }
00133
00144 KURL uri() const { return m_pURI; }
00145
00156 QString errorMsg() const { return m_strErrMsg; }
00157
00164 URITypes uriType() const { return m_iType; }
00165
00175 void setData( const QString& url ) { init( url ); }
00176
00186 void setData( const KURL& url ) { init( url ); }
00187
00204 bool setAbsolutePath( const QString& );
00205
00209 QString absolutePath() const;
00210
00214 bool hasAbsolutePath() const;
00215
00222 QString argsAndOptions() const;
00223
00228 bool hasArgsAndOptions() const;
00229
00240 QString iconName();
00241
00250 KURIFilterData& operator=( const KURL& url ) { init( url ); return *this; }
00251
00260 KURIFilterData& operator=( const QString& url ) { init( url ); return *this; }
00261
00262 protected:
00263
00267 void init( const KURL& url = QString::null );
00268
00269 private:
00270 bool m_bFiltered;
00271 bool m_bChanged;
00272
00273 QString m_strErrMsg;
00274 QString m_strIconName;
00275
00276 KURL m_pURI;
00277 URITypes m_iType;
00278 KURIFilterDataPrivate *d;
00279 };
00280
00281
00296 class KURIFilterPlugin : public QObject
00297 {
00298 Q_OBJECT
00299
00300 public:
00301
00310 KURIFilterPlugin( QObject *parent = 0, const char *name = 0, double pri = 1.0 );
00311
00317 virtual QString name() const { return m_strName; }
00318
00327 virtual double priority() const { return m_dblPriority; }
00328
00335 virtual bool filterURI( KURIFilterData& data ) const = 0;
00336
00345 virtual KCModule *configModule( QWidget*, const char* ) const { return 0; }
00346
00352 virtual QString configName() const { return name(); }
00353
00354 protected:
00355
00359 void setFilteredURI ( KURIFilterData& data, const KURL& uri ) const;
00360
00364 void setErrorMsg ( KURIFilterData& data, const QString& errmsg ) const {
00365 data.m_strErrMsg = errmsg;
00366 }
00367
00371 void setURIType ( KURIFilterData& data, KURIFilterData::URITypes type) const {
00372 data.m_iType = type;
00373 data.m_bChanged = true;
00374 }
00375
00380 void setArguments( KURIFilterData& data, const QString& args ) const;
00381
00382 QString m_strName;
00383 double m_dblPriority;
00384
00385 protected:
00386 virtual void virtual_hook( int id, void* data );
00387 private:
00388 class KURIFilterPluginPrivate *d;
00389 };
00390
00391
00392 class KURIFilterPluginList : public QPtrList<KURIFilterPlugin>
00393 {
00394 public:
00395 virtual int compareItems(Item a, Item b)
00396 {
00397 double diff = ((KURIFilterPlugin *) a)->priority() - ((KURIFilterPlugin *) b)->priority();
00398 return diff < 0 ? -1 : (diff > 0 ? 1 : 0);
00399 }
00400
00401 private:
00402 KURIFilterPrivate *d;
00403
00404 };
00405
00469 class KURIFilter
00470 {
00471 public:
00475 ~KURIFilter ();
00476
00480 static KURIFilter* self();
00481
00495 bool filterURI( KURIFilterData& data, const QStringList& filters = QStringList() );
00496
00510 bool filterURI( KURL &uri, const QStringList& filters = QStringList() );
00511
00525 bool filterURI( QString &uri, const QStringList& filters = QStringList() );
00526
00540 KURL filteredURI( const KURL &uri, const QStringList& filters = QStringList() );
00541
00555 QString filteredURI( const QString &uri, const QStringList& filters = QStringList() );
00556
00563 QPtrListIterator<KURIFilterPlugin> pluginsIterator() const;
00564
00572 QStringList pluginNames() const;
00573
00574 protected:
00575
00583 KURIFilter();
00584
00591 void loadPlugins();
00592
00593 private:
00594
00595 static KURIFilter *m_self;
00596 KURIFilterPluginList m_lstPlugins;
00597 KURIFilterPrivate *d;
00598
00599 };
00600
00601 #endif
00602
This file is part of the documentation for kdelibs Version 3.1.0.