00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
#ifndef __kurl_h__
00021
#define __kurl_h__ "$Id: kurl.h,v 1.130 2003/12/10 13:55:53 waba Exp $"
00022
00023
#include <qstring.h>
00024
#include <qvaluelist.h>
00025
#include "kdemacros.h"
00026
00027
class QUrl;
00028
class QStringList;
00029
template <
typename K,
typename V>
class QMap;
00030
00031
class KURLPrivate;
00118 class KURL
00119 {
00120
public:
00121
enum AdjustementFlags
00122 {
00123 NoAdjustements = 0,
00124 StripFileProtocol = 1
00125 };
00126
00130 enum URIMode
00131 {
00136
Auto,
00141
Invalid,
00146
RawURI,
00150
URL,
00156
Mailto
00157 };
00158
00165 class List :
public QValueList<KURL>
00166 {
00167
public:
00171 List() { }
00177
List(
const KURL &url);
00183
List(
const QStringList &list);
00188
QStringList toStringList() const;
00189 };
00193
KURL();
00194
00198 ~
KURL();
00199
00216
KURL( const
QString& url,
int encoding_hint = 0 );
00226
KURL( const
char * url,
int encoding_hint = 0 );
00236
KURL( const
QCString& url,
int encoding_hint = 0 );
00237
00242
KURL( const
KURL& u );
00247
KURL( const
QUrl &u );
00260
KURL( const
KURL& _baseurl, const
QString& _rel_url,
int encoding_hint=0 );
00261
00267 QString protocol()
const {
return m_bIsMalformed ? QString::null : m_strProtocol; }
00272
void setProtocol(
const QString& _txt );
00273
00279
int uriMode() const;
00280
00285 QString user()
const {
return m_strUser; }
00292
void setUser(
const QString& _txt );
00297 bool hasUser()
const {
return !m_strUser.isEmpty(); }
00298
00303 QString pass()
const {
return m_strPass; }
00314
void setPass(
const QString& _txt );
00319 bool hasPass()
const {
return !m_strPass.isEmpty(); }
00320
00325 QString host()
const {
return m_strHost; }
00326
00333
void setHost(
const QString& _txt );
00338 bool hasHost()
const {
return !m_strHost.isEmpty(); }
00339
00345 unsigned short int port()
const {
return m_iPort; }
00350
void setPort(
unsigned short int _p );
00351
00357 QString path()
const {
return m_strPath; }
00358
00372
QString path(
int _trailing )
const;
00373
00382
void setPath(
const QString& path );
00383
00388 bool hasPath()
const {
return !m_strPath.isEmpty(); }
00389
00398
void cleanPath(
bool cleanDirSeparator =
true);
00399
00411
void adjustPath(
int _trailing);
00412
00420
void setEncodedPathAndQuery(
const QString& _txt,
int encoding_hint = 0 );
00421
00428
void setEncodedPath(
const QString& _txt,
int encoding_hint = 0 );
00429
00447
QString encodedPathAndQuery(
int _trailing = 0,
bool _no_empty_path =
false,
int encoding_hint = 0)
const;
00448
00457
void setQuery(
const QString& _txt,
int encoding_hint = 0);
00458
00467
QString query() const;
00468
00473 QString ref()
const {
return m_strRef_encoded; }
00474
00479 void setRef(
const QString& _txt ) { m_strRef_encoded = _txt; }
00480
00487 bool hasRef()
const {
return !m_strRef_encoded.isNull(); }
00488
00496
QString htmlRef() const;
00497
00503
QString encodedHtmlRef() const;
00504
00512
void setHTMLRef( const
QString& _ref );
00513
00519
bool hasHTMLRef() const;
00520
00526 bool isValid()
const {
return !m_bIsMalformed; }
00530 KDE_DEPRECATED
bool isMalformed()
const {
return !
isValid(); }
00531
00537
bool isLocalFile() const;
00538
00545
void setFileEncoding(const
QString &encoding);
00546
00553
QString fileEncoding() const;
00554
00561
bool hasSubURL() const;
00562
00573
void addPath( const
QString& txt );
00574
00579
QString queryItem( const
QString& item ) const;
00580
00590
QString queryItem( const
QString& item,
int encoding_hint ) const;
00591
00600 enum QueryItemsOptions { CaseInsensitiveKeys = 1 };
00601
00605
QMap< QString, QString > queryItems(
int options=0 )
const;
00606
00618
QMap< QString, QString > queryItems(
int options,
int encoding_hint )
const;
00619
00630
void addQueryItem(
const QString& _item,
const QString& _value,
int encoding_hint = 0 );
00631
00637
void removeQueryItem(
const QString& _item );
00638
00652
void setFileName(
const QString&_txt );
00653
00664
QString fileName(
bool _ignore_trailing_slash_in_path =
true )
const;
00665
00677
QString directory(
bool _strip_trailing_slash_from_result =
true,
00678
bool _ignore_trailing_slash_in_path =
true )
const;
00679
00683
void setDirectory(
const QString &dir);
00684
00698
bool cd(
const QString& _dir );
00699
00718
QString url(
int _trailing = 0,
int encoding_hint = 0)
const;
00719
00733
QString prettyURL(
int _trailing = 0)
const;
00734
00744
QString prettyURL(
int _trailing, AdjustementFlags _flags)
const;
00745
00746
00753
QString htmlURL() const;
00754
00755
00760
bool isEmpty() const;
00761
00770
KURL upURL( ) const;
00771
00772
bool operator<(const
KURL& _u) const;
00773
00774
KURL& operator=( const
KURL& _u );
00775
KURL& operator=( const
QString& _url );
00776
KURL& operator=( const
char * _url );
00777
KURL& operator=( const
QUrl & u );
00778
00779
bool operator==( const
KURL& _u ) const;
00780
bool operator==( const
QString& _u ) const;
00781
bool operator!=( const
KURL& _u )
const {
return !( *
this == _u ); }
00782
bool operator!=(
const QString& _u )
const {
return !( *
this == _u ); }
00783
00794
bool cmp(
const KURL &u,
bool ignore_trailing =
false )
const KDE_DEPRECATED;
00795
00805
bool equals(
const KURL &u,
bool ignore_trailing =
false )
const;
00806
00812
bool isParentOf(
const KURL& u )
const;
00813
00829
static List split(
const QString& _url );
00830
00846
static List split(
const KURL& _url );
00847
00855
static KURL join(
const List& _list );
00856
00870
static KURL fromPathOrURL(
const QString& text );
00871
00882
static QString encode_string(
const QString &str,
int encoding_hint = 0);
00883
00894
static QString encode_string_no_slash(
const QString &str,
int encoding_hint = 0);
00895
00906
static QString decode_string(
const QString &str,
int encoding_hint = 0);
00907
00916
static bool isRelativeURL(
const QString &_url);
00917
00934
static QString relativeURL(
const KURL &base_url,
const KURL &url,
int encoding_hint = 0);
00935
00945
static QString relativePath(
const QString &base_dir,
const QString &path,
bool *isParent=0);
00946
00952
static URIMode uriModeForProtocol(
const QString& protocol);
00953
00954
#ifdef KDE_NO_COMPAT
00955
private:
00956
#endif
00957
QString filename(
bool _ignore_trailing_slash_in_path =
true )
const
00958
{
00959
return fileName(_ignore_trailing_slash_in_path);
00960 }
00961
00962
protected:
00963
void reset();
00964
void parseURL(
const QString& _url,
int encoding_hint = 0 );
00965
void parseRawURI(
const QString& _url,
int encoding_hint = 0 );
00966
void parseMailto(
const QString& _url,
int encoding_hint = 0 );
00967
void parse(
const QString& _url,
int encoding_hint = 0 );
00968
00969
private:
00970
void _setQuery(
const QString& _txt,
int encoding_hint = 0);
00971
00972
QString m_strProtocol;
00973
QString m_strUser;
00974
QString m_strPass;
00975
QString m_strHost;
00976
QString m_strPath;
00977
QString m_strRef_encoded;
00978
QString m_strQuery_encoded;
00979
bool m_bIsMalformed : 1;
00980
enum URIMode m_iUriMode : 3;
00981 uint freeForUse : 4;
00982
unsigned short int m_iPort;
00983
QString m_strPath_encoded;
00984
00985
friend QDataStream & operator<< (
QDataStream & s,
const KURL & a);
00986
friend QDataStream & operator>> (
QDataStream & s,
KURL & a);
00987
private:
00988 KURLPrivate* d;
00989 };
00990
00998
bool urlcmp(
const QString& _url1,
const QString& _url2 );
00999
01012
bool urlcmp(
const QString& _url1,
const QString& _url2,
bool _ignore_trailing,
bool _ignore_ref );
01013
01014
QDataStream & operator<< (
QDataStream & s,
const KURL & a);
01015
QDataStream & operator>> (
QDataStream & s,
KURL & a);
01016
01017
#endif