/**************************************************************************** ** ** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/ ** ** This file is part of the QtCore module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** GNU Lesser General Public License Usage ** This file may be used under the terms of the GNU Lesser General Public ** License version 2.1 as published by the Free Software Foundation and ** appearing in the file LICENSE.LGPL included in the packaging of this ** file. Please review the following information to ensure the GNU Lesser ** General Public License version 2.1 requirements will be met: ** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** ** In addition, as a special exception, Nokia gives you certain additional ** rights. These rights are described in the Nokia Qt LGPL Exception ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ** ** GNU General Public License Usage ** Alternatively, this file may be used under the terms of the GNU General ** Public License version 3.0 as published by the Free Software Foundation ** and appearing in the file LICENSE.GPL included in the packaging of this ** file. Please review the following information to ensure the GNU General ** Public License version 3.0 requirements will be met: ** http://www.gnu.org/copyleft/gpl.html. ** ** Other Usage ** Alternatively, this file may be used in accordance with the terms and ** conditions contained in a signed written agreement between you and Nokia. ** ** ** ** ** ** ** $QT_END_LICENSE$ ** ****************************************************************************/ #ifndef QURL_H #define QURL_H #include #include #include #include QT_BEGIN_HEADER QT_BEGIN_NAMESPACE class QUrlPrivate; class QDataStream; class Q_CORE_EXPORT QUrl { public: enum ParsingMode { TolerantMode, StrictMode }; // encoding / toString values enum FormattingOption { None = 0x0, RemoveScheme = 0x1, RemovePassword = 0x2, RemoveUserInfo = RemovePassword | 0x4, RemovePort = 0x8, RemoveAuthority = RemoveUserInfo | RemovePort | 0x10, RemovePath = 0x20, RemoveQuery = 0x40, RemoveFragment = 0x80, // 0x100: private: normalized PreferLocalFile = 0x200, StripTrailingSlash = 0x10000 }; Q_DECLARE_FLAGS(FormattingOptions, FormattingOption) enum ComponentFormattingOption { FullyEncoded = 0x000000, DecodeSpaces = 0x100000, DecodeUnambiguousDelimiters = 0x200000, DecodeAllDelimiters = DecodeUnambiguousDelimiters | 0x400000, DecodeUnicode = 0x800000, PrettyDecoded = DecodeSpaces | DecodeUnambiguousDelimiters | DecodeUnicode, MostDecoded = PrettyDecoded | DecodeAllDelimiters }; Q_DECLARE_FLAGS(ComponentFormattingOptions, ComponentFormattingOption) QUrl(); #ifdef QT_NO_URL_CAST_FROM_STRING explicit #endif QUrl(const QString &url, ParsingMode mode = TolerantMode); QUrl(const QUrl ©); QUrl &operator =(const QUrl ©); #ifndef QT_NO_URL_CAST_FROM_STRING QUrl &operator =(const QString &url); #endif #ifdef Q_COMPILER_RVALUE_REFS inline QUrl &operator=(QUrl &&other) { qSwap(d, other.d); return *this; } #endif ~QUrl(); inline void swap(QUrl &other) { qSwap(d, other.d); } void setUrl(const QString &url, ParsingMode mode = TolerantMode); QString url(FormattingOptions options = None) const; QString toString(FormattingOptions options = None) const; QString toDisplayString(FormattingOptions options = None) const; bool isValid() const; bool isEmpty() const; void clear(); void setScheme(const QString &scheme); QString scheme() const; void setAuthority(const QString &authority); QString authority() const; void setUserInfo(const QString &userInfo); QString userInfo() const; void setUserName(const QString &userName); QString userName() const; void setEncodedUserName(const QByteArray &userName); QByteArray encodedUserName() const; void setPassword(const QString &password); QString password() const; void setEncodedPassword(const QByteArray &password); QByteArray encodedPassword() const; void setHost(const QString &host); QString host() const; void setEncodedHost(const QByteArray &host); QByteArray encodedHost() const; void setPort(int port); int port(int defaultPort = -1) const; void setPath(const QString &path); QString path() const; void setEncodedPath(const QByteArray &path); QByteArray encodedPath() const; bool hasQuery() const; QByteArray encodedQuery() const; void setEncodedQuery(const QByteArray &query); void setFragment(const QString &fragment); QString fragment() const; void setEncodedFragment(const QByteArray &fragment); QByteArray encodedFragment() const; bool hasFragment() const; QString topLevelDomain() const; QUrl resolved(const QUrl &relative) const; bool isRelative() const; bool isParentOf(const QUrl &url) const; static QUrl fromLocalFile(const QString &localfile); QString toLocalFile() const; bool isLocalFile() const; QByteArray toEncoded(FormattingOptions options = None) const; static QUrl fromUserInput(const QString &userInput); void detach(); bool isDetached() const; bool operator <(const QUrl &url) const; bool operator ==(const QUrl &url) const; bool operator !=(const QUrl &url) const; static QString fromPercentEncoding(const QByteArray &); static QByteArray toPercentEncoding(const QString &, const QByteArray &exclude = QByteArray(), const QByteArray &include = QByteArray()); #if QT_DEPRECATED_SINCE(5,0) QT_DEPRECATED static QString fromPunycode(const QByteArray &punycode) { return fromAce(punycode); } QT_DEPRECATED static QByteArray toPunycode(const QString &string) { return toAce(string); } QT_DEPRECATED inline void setQueryItems(const QList > &qry); QT_DEPRECATED inline void addQueryItem(const QString &key, const QString &value); QT_DEPRECATED inline QList > queryItems() const; QT_DEPRECATED inline bool hasQueryItem(const QString &key) const; QT_DEPRECATED inline QString queryItemValue(const QString &key) const; QT_DEPRECATED inline QStringList allQueryItemValues(const QString &key) const; QT_DEPRECATED inline void removeQueryItem(const QString &key); QT_DEPRECATED inline void removeAllQueryItems(const QString &key); #endif static QString fromAce(const QByteArray &); static QByteArray toAce(const QString &); static QStringList idnWhitelist(); static void setIdnWhitelist(const QStringList &); QString errorString() const; #if QT_DEPRECATED_SINCE(5,0) QT_DEPRECATED void setEncodedUrl(const QByteArray &u, ParsingMode mode = TolerantMode) { setUrl(QString::fromUtf8(u.constData(), u.size()), mode); } QT_DEPRECATED static QUrl fromEncoded(const QByteArray &u, ParsingMode mode = TolerantMode) { return QUrl(QString::fromUtf8(u.constData(), u.size()), mode); } #endif private: QUrlPrivate *d; public: typedef QUrlPrivate * DataPtr; inline DataPtr &data_ptr() { return d; } }; inline uint qHash(const QUrl &url) { return qHash(url.toEncoded(QUrl::FormattingOption(0x100))); } Q_DECLARE_TYPEINFO(QUrl, Q_MOVABLE_TYPE); Q_DECLARE_SHARED(QUrl) Q_DECLARE_OPERATORS_FOR_FLAGS(QUrl::ComponentFormattingOptions) Q_DECLARE_OPERATORS_FOR_FLAGS(QUrl::FormattingOptions) #ifndef QT_NO_DATASTREAM Q_CORE_EXPORT QDataStream &operator<<(QDataStream &, const QUrl &); Q_CORE_EXPORT QDataStream &operator>>(QDataStream &, QUrl &); #endif #ifndef QT_NO_DEBUG_STREAM Q_CORE_EXPORT QDebug operator<<(QDebug, const QUrl &); #endif QT_END_NAMESPACE #if QT_DEPRECATED_SINCE(5,0) # include #endif QT_END_HEADER #endif // QURL_H