00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
#ifndef __kprotocolinfo_h__
00020
#define __kprotocolinfo_h__
00021
00022
#include <qstring.h>
00023
#include <qstringlist.h>
00024
#include <qdatastream.h>
00025
00026
#include <kurl.h>
00027
#include <ksycocaentry.h>
00028
#include <ksycocatype.h>
00029
00044 class KIO_EXPORT KProtocolInfo :
public KSycocaEntry
00045 {
00046
friend class KProtocolInfoFactory;
00047 K_SYCOCATYPE( KST_KProtocolInfo,
KSycocaEntry )
00048
00049
public:
00050
typedef KSharedPtr<KProtocolInfo> Ptr;
00051
00052
public:
00057 KProtocolInfo(
const QString & path);
00058
00059
00064 virtual bool isValid()
const {
return !m_name.isEmpty(); }
00065
00074 virtual QString name()
const {
return m_name; }
00075
00076
00077
00078
00079
00084
static QStringList protocols();
00085
00093
static bool isKnownProtocol(
const KURL &url );
00094
00099
static bool isKnownProtocol(
const QString& protocol );
00100
00112
static QString exec(
const QString& protocol );
00113
00117 enum Type { T_STREAM,
00118 T_FILESYSTEM,
00119 T_NONE,
00120 T_ERROR
00121 };
00122
00133
static Type inputType(
const KURL &url );
00134
00145
static Type outputType(
const KURL &url );
00146
00159
static QStringList listing(
const KURL &url );
00160
00171 struct ExtraField {
00172
ExtraField() {}
00173
ExtraField(
const QString& _name,
const QString& _type )
00174 : name(_name), type(_type) {
00175 }
00176
QString name;
00177
QString type;
00178 };
00179
typedef QValueList<ExtraField > ExtraFieldList;
00189
static ExtraFieldList extraFields(
const KURL& url );
00190
00204
static bool isSourceProtocol(
const KURL &url );
00205
00218
static bool isHelperProtocol(
const KURL &url );
00219
00224
static bool isHelperProtocol(
const QString& protocol );
00225
00242
static bool isFilterProtocol(
const KURL &url );
00243
00248
static bool isFilterProtocol(
const QString& protocol );
00249
00265
static bool supportsListing(
const KURL &url );
00266
00276
static bool supportsReading(
const KURL &url );
00277
00287
static bool supportsWriting(
const KURL &url );
00288
00298
static bool supportsMakeDir(
const KURL &url );
00299
00309
static bool supportsDeleting(
const KURL &url );
00310
00320
static bool supportsLinking(
const KURL &url );
00321
00332
static bool supportsMoving(
const KURL &url );
00333
00346
static bool canCopyFromFile(
const KURL &url );
00347
00360
static bool canCopyToFile(
const KURL &url );
00361
00375
static bool canRenameFromFile(
const KURL &url );
00376
00390
static bool canRenameToFile(
const KURL &url );
00391
00404
static bool canDeleteRecursive(
const KURL &url );
00405
00406
typedef enum { Name, FromURL } FileNameUsedForCopying;
00407
00424
static FileNameUsedForCopying fileNameUsedForCopying(
const KURL &url );
00425
00434
static QString defaultMimetype(
const KURL& url );
00435
00444
static QString icon(
const QString& protocol );
00445
00457
static QString config(
const QString& protocol );
00458
00471
static int maxSlaves(
const QString& protocol );
00472
00484
static bool determineMimetypeFromExtension(
const QString &protocol );
00485
00495
static QString docPath(
const QString& protocol );
00496
00513
static QString protocolClass(
const QString& protocol );
00514
00526
static bool showFilePreview(
const QString& protocol );
00527
00543
static KURL::URIMode uriParseMode(
const QString& protocol );
00544
00563
static QStringList capabilities(
const QString& protocol );
00564
00576
static QString proxiedBy(
const QString& protocol );
00577
00578
public:
00579
00583 KProtocolInfo(
QDataStream& _str,
int offset);
00584
00585
virtual ~KProtocolInfo();
00586
00591
virtual void load(
QDataStream& );
00592
00597
virtual void save(
QDataStream& );
00598
00600
00601
00603
static Type inputType(
const QString& protocol ) KDE_DEPRECATED;
00605
static Type outputType(
const QString& protocol ) KDE_DEPRECATED;
00612
static QStringList listing(
const QString& protocol ) KDE_DEPRECATED;
00614
static bool isSourceProtocol(
const QString& protocol ) KDE_DEPRECATED;
00616
static bool supportsListing(
const QString& protocol ) KDE_DEPRECATED;
00618
static bool supportsReading(
const QString& protocol ) KDE_DEPRECATED;
00620
static bool supportsWriting(
const QString& protocol ) KDE_DEPRECATED;
00622
static bool supportsMakeDir(
const QString& protocol ) KDE_DEPRECATED;
00624
static bool supportsDeleting(
const QString& protocol ) KDE_DEPRECATED;
00626
static bool supportsLinking(
const QString& protocol ) KDE_DEPRECATED;
00628
static bool supportsMoving(
const QString& protocol ) KDE_DEPRECATED;
00630
static bool canCopyFromFile(
const QString& protocol ) KDE_DEPRECATED;
00632
static bool canCopyToFile(
const QString& protocol ) KDE_DEPRECATED;
00634
static QString defaultMimetype(
const QString& protocol) KDE_DEPRECATED;
00636
00637
protected:
00638
QString m_name;
00639
QString m_exec;
00640 Type m_inputType;
00641 Type m_outputType;
00642
QStringList m_listing;
00643
bool m_isSourceProtocol;
00644
bool m_isHelperProtocol;
00645
bool m_supportsListing;
00646
bool m_supportsReading;
00647
bool m_supportsWriting;
00648
bool m_supportsMakeDir;
00649
bool m_supportsDeleting;
00650
bool m_supportsLinking;
00651
bool m_supportsMoving;
00652
QString m_defaultMimetype;
00653
bool m_determineMimetypeFromExtension;
00654
QString m_icon;
00655
bool m_canCopyFromFile;
00656
bool m_canCopyToFile;
00657
QString m_config;
00658
int m_maxSlaves;
00659
00660
bool canRenameFromFile() const;
00661
bool canRenameToFile() const;
00662
bool canDeleteRecursive() const;
00663 FileNameUsedForCopying fileNameUsedForCopying() const;
00664 static KProtocolInfo* findProtocol(const
KURL &url);
00665
00666 protected:
00667 virtual
void virtual_hook(
int id,
void* data );
00668 private:
00669 class KProtocolInfoPrivate;
00670 KProtocolInfoPrivate* d;
00671 };
00672
00673 KIO_EXPORT
QDataStream& operator>>(
QDataStream& s, KProtocolInfo::ExtraField& field );
00674 KIO_EXPORT
QDataStream& operator<<(
QDataStream& s, const KProtocolInfo::ExtraField& field );
00675
00676 #endif