kdecore Library API Documentation

kurl.h

00001 /* This file is part of the KDE libraries
00002  *  Copyright (C) 1999 Torben Weis <weis@kde.org>
00003  *
00004  *  This library is free software; you can redistribute it and/or
00005  *  modify it under the terms of the GNU Library General Public
00006  *  License as published by the Free Software Foundation; either
00007  *  version 2 of the License, or (at your option) any later version.
00008  *
00009  *  This library is distributed in the hope that it will be useful,
00010  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
00011  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00012  *  Library General Public License for more details.
00013  *
00014  *  You should have received a copy of the GNU Library General Public License
00015  *  along with this library; see the file COPYING.LIB.  If not, write to
00016  *  the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
00017  *  Boston, MA 02111-1307, USA.
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   // ### BIC: Merge the two above + spell it as "Adjustment"
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; // TODO KDE4: add bool _ignore_ref = false
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
KDE Logo
This file is part of the documentation for kdecore Library Version 3.2.2.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Sun May 16 22:01:23 2004 by doxygen 1.2.15 written by Dimitri van Heesch, © 1997-2003