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 ) { init( url ); }
00189
00199 void setData(
const KURL& url ) { init( 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 ) { init( url );
return *
this; }
00294
00303 KURIFilterData& operator=(
const QString& url ) { init( 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
bool m_bCheckForExecutables;
00321
bool m_bChanged;
00322
00323
QString m_strErrMsg;
00324
QString m_strIconName;
00325
00326
KURL m_pURI;
00327 URITypes m_iType;
00328 KURIFilterDataPrivate *d;
00329 };
00330
00331
00344 class KIO_EXPORT KURIFilterPlugin :
public QObject
00345 {
00346 Q_OBJECT
00347
00348
public:
00349
00358 KURIFilterPlugin(
QObject *parent = 0,
const char *name = 0,
double pri = 1.0 );
00359
00365 virtual QString name()
const {
return m_strName; }
00366
00375 virtual double priority()
const {
return m_dblPriority; }
00376
00383
virtual bool filterURI( KURIFilterData& data )
const = 0;
00384
00393 virtual KCModule *configModule(
QWidget*,
const char* )
const {
return 0; }
00394
00400 virtual QString configName()
const {
return name(); }
00401
00402
protected:
00403
00407
void setFilteredURI ( KURIFilterData& data,
const KURL& uri )
const;
00408
00412 void setErrorMsg ( KURIFilterData& data,
const QString& errmsg )
const {
00413 data.
m_strErrMsg = errmsg;
00414 }
00415
00419 void setURIType ( KURIFilterData& data, KURIFilterData::URITypes type)
const {
00420 data.
m_iType = type;
00421 data.
m_bChanged =
true;
00422 }
00423
00428
void setArguments( KURIFilterData& data,
const QString& args )
const;
00429
00430
QString m_strName;
00431
double m_dblPriority;
00432
00433
protected:
00434
virtual void virtual_hook(
int id,
void* data );
00435
private:
00436
class KURIFilterPluginPrivate *d;
00437 };
00438
00439
00443 class KIO_EXPORT KURIFilterPluginList :
public QPtrList<KURIFilterPlugin>
00444 {
00445
public:
00446
virtual int compareItems(Item a, Item b)
00447 {
00448
double diff = ((KURIFilterPlugin *) a)->priority() - ((KURIFilterPlugin *) b)->priority();
00449
return diff < 0 ? -1 : (diff > 0 ? 1 : 0);
00450 }
00451
00452
private:
00453 KURIFilterPrivate *d;
00454
00455 };
00456
00528 class KIO_EXPORT KURIFilter
00529 {
00530
public:
00534 ~KURIFilter ();
00535
00539
static KURIFilter*
self();
00540
00552
bool filterURI( KURIFilterData& data,
const QStringList& filters =
QStringList() );
00553
00565
bool filterURI(
KURL &uri,
const QStringList& filters =
QStringList() );
00566
00578
bool filterURI(
QString &uri,
const QStringList& filters =
QStringList() );
00579
00591
KURL filteredURI(
const KURL &uri,
const QStringList& filters =
QStringList() );
00592
00604
QString filteredURI(
const QString &uri,
const QStringList& filters =
QStringList() );
00605
00612
QPtrListIterator<KURIFilterPlugin> pluginsIterator()
const;
00613
00620
QStringList pluginNames()
const;
00621
00622
protected:
00623
00631 KURIFilter();
00632
00639
void loadPlugins();
00640
00641
private:
00642
static KURIFilter *m_self;
00643 KURIFilterPluginList m_lstPlugins;
00644 KURIFilterPrivate *d;
00645 };
00646
00647
#endif