kurifilter.h00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef __kurifilter_h__
00026 #define __kurifilter_h__
00027
00028 #include <qptrlist.h>
00029 #include <qobject.h>
00030 #include <qstringlist.h>
00031
00032 #include <kurl.h>
00033
00034 #ifdef Q_OS_WIN
00035 #undef ERROR
00036 #endif
00037
00038 class KURIFilterPrivate;
00039 class KURIFilterDataPrivate;
00040
00041 class KCModule;
00042
00078 class KIO_EXPORT KURIFilterData
00079 {
00080 friend class KURIFilterPlugin;
00081
00082 public:
00099 enum URITypes { NET_PROTOCOL=0, LOCAL_FILE, LOCAL_DIR, EXECUTABLE, HELP, SHELL, BLOCKED, ERROR, UNKNOWN };
00100
00106 KURIFilterData() { init(); }
00107
00113 KURIFilterData( const KURL& url ) { init( url); }
00114
00120 KURIFilterData( const QString& url ) { init( url ); }
00121
00130 KURIFilterData( const KURIFilterData& data);
00131
00135 ~KURIFilterData();
00136
00144 KDE_DEPRECATED bool hasBeenFiltered() const { return true; }
00145
00156 KURL uri() const { return m_pURI; }
00157
00168 QString errorMsg() const { return m_strErrMsg; }
00169
00177 URITypes uriType() const { return m_iType; }
00178
00188 void setData( const QString& url ) { reinit( url ); }
00189
00199 void setData( const KURL& url ) { reinit( url ); }
00200
00215 bool setAbsolutePath( const QString& abs_path );
00216
00222 QString absolutePath() const;
00223
00229 bool hasAbsolutePath() const;
00230
00237 QString argsAndOptions() const;
00238
00244 bool hasArgsAndOptions() const;
00245
00257 QString iconName();
00258
00269 void setCheckForExecutables (bool check);
00270
00277 bool checkForExecutables() const { return m_bCheckForExecutables; }
00278
00283 QString typedString() const;
00284
00293 KURIFilterData& operator=( const KURL& url ) { reinit( url ); return *this; }
00294
00303 KURIFilterData& operator=( const QString& url ) { reinit( url ); return *this; }
00304
00305 protected:
00306
00311 void init( const KURL& url);
00312
00317 void init( const QString& url = QString::null );
00318
00319 private:
00320
00321
00322
00323 void reinit(const KURL& url);
00324 void reinit(const QString& url = QString::null);
00325
00326 bool m_bCheckForExecutables;
00327 bool m_bChanged;
00328
00329 QString m_strErrMsg;
00330 QString m_strIconName;
00331
00332 KURL m_pURI;
00333 URITypes m_iType;
00334 KURIFilterDataPrivate *d;
00335 };
00336
00337
00350 class KIO_EXPORT KURIFilterPlugin : public QObject
00351 {
00352 Q_OBJECT
00353
00354 public:
00355
00364 KURIFilterPlugin( QObject *parent = 0, const char *name = 0, double pri = 1.0 );
00365
00371 virtual QString name() const { return m_strName; }
00372
00381 virtual double priority() const { return m_dblPriority; }
00382
00389 virtual bool filterURI( KURIFilterData& data ) const = 0;
00390
00399 virtual KCModule *configModule( QWidget*, const char* ) const { return 0; }
00400
00406 virtual QString configName() const { return name(); }
00407
00408 protected:
00409
00413 void setFilteredURI ( KURIFilterData& data, const KURL& uri ) const;
00414
00418 void setErrorMsg ( KURIFilterData& data, const QString& errmsg ) const {
00419 data.m_strErrMsg = errmsg;
00420 }
00421
00425 void setURIType ( KURIFilterData& data, KURIFilterData::URITypes type) const {
00426 data.m_iType = type;
00427 data.m_bChanged = true;
00428 }
00429
00434 void setArguments( KURIFilterData& data, const QString& args ) const;
00435
00436 QString m_strName;
00437 double m_dblPriority;
00438
00439 protected:
00440 virtual void virtual_hook( int id, void* data );
00441 private:
00442 class KURIFilterPluginPrivate *d;
00443 };
00444
00445
00449 class KIO_EXPORT KURIFilterPluginList : public QPtrList<KURIFilterPlugin>
00450 {
00451 public:
00452 virtual int compareItems(Item a, Item b)
00453 {
00454 double diff = ((KURIFilterPlugin *) a)->priority() - ((KURIFilterPlugin *) b)->priority();
00455 return diff < 0 ? -1 : (diff > 0 ? 1 : 0);
00456 }
00457
00458 private:
00459 KURIFilterPrivate *d;
00460
00461 };
00462
00534 class KIO_EXPORT KURIFilter
00535 {
00536 public:
00540 ~KURIFilter ();
00541
00545 static KURIFilter* self();
00546
00558 bool filterURI( KURIFilterData& data, const QStringList& filters = QStringList() );
00559
00571 bool filterURI( KURL &uri, const QStringList& filters = QStringList() );
00572
00584 bool filterURI( QString &uri, const QStringList& filters = QStringList() );
00585
00597 KURL filteredURI( const KURL &uri, const QStringList& filters = QStringList() );
00598
00610 QString filteredURI( const QString &uri, const QStringList& filters = QStringList() );
00611
00618 QPtrListIterator<KURIFilterPlugin> pluginsIterator() const;
00619
00626 QStringList pluginNames() const;
00627
00628 protected:
00629
00637 KURIFilter();
00638
00645 void loadPlugins();
00646
00647 private:
00648 static KURIFilter *s_self;
00649 KURIFilterPluginList m_lstPlugins;
00650 KURIFilterPrivate *d;
00651 };
00652
00653 #endif
|