kio
kurifilter.h
Go to the documentation of this file.00001
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