Add QUrl::setQuery overload with QUrlQuery

Change-Id: I0cba92b6bf7f848f1918383b380c0444b8bead3a
Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
This commit is contained in:
Thiago Macieira 2011-10-20 01:23:14 +02:00 committed by Qt by Nokia
parent f40e934983
commit 8cf66c3bc4
3 changed files with 18 additions and 3 deletions

View File

@ -199,6 +199,7 @@
#include "qdir.h" // for QDir::fromNativeSeparators #include "qdir.h" // for QDir::fromNativeSeparators
#include "qtldurl_p.h" #include "qtldurl_p.h"
#include "private/qipaddress_p.h" #include "private/qipaddress_p.h"
#include "qurlquery.h"
#if defined(Q_OS_WINCE_WM) #if defined(Q_OS_WINCE_WM)
#pragma optimize("g", off) #pragma optimize("g", off)
#endif #endif
@ -1725,6 +1726,18 @@ void QUrl::setQuery(const QString &query)
d->sectionIsPresent &= ~QUrlPrivate::Query; d->sectionIsPresent &= ~QUrlPrivate::Query;
} }
void QUrl::setQuery(const QUrlQuery &query)
{
detach();
// we know the data is in the right format
d->query = query.toString();
if (query.isEmpty())
d->sectionIsPresent &= ~QUrlPrivate::Query;
else
d->sectionIsPresent |= QUrlPrivate::Query;
}
/*! /*!
Returns the query string of the URL in percent encoded form. Returns the query string of the URL in percent encoded form.
*/ */

View File

@ -53,6 +53,7 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE QT_BEGIN_NAMESPACE
class QUrlQuery;
class QUrlPrivate; class QUrlPrivate;
class QDataStream; class QDataStream;
@ -213,6 +214,7 @@ public:
bool hasQuery() const; bool hasQuery() const;
void setQuery(const QString &query); void setQuery(const QString &query);
void setQuery(const QUrlQuery &query);
QString query(ComponentFormattingOptions = PrettyDecoded) const; QString query(ComponentFormattingOptions = PrettyDecoded) const;
bool hasFragment() const; bool hasFragment() const;

View File

@ -116,9 +116,9 @@ Q_DECLARE_SHARED(QUrlQuery)
#if QT_DEPRECATED_SINCE(5,0) #if QT_DEPRECATED_SINCE(5,0)
inline void QUrl::setQueryItems(const QList<QPair<QString, QString> > &qry) inline void QUrl::setQueryItems(const QList<QPair<QString, QString> > &qry)
{ QUrlQuery q(*this); q.setQueryItems(qry); setQuery(q.query()); } { QUrlQuery q(*this); q.setQueryItems(qry); setQuery(q); }
inline void QUrl::addQueryItem(const QString &key, const QString &value) inline void QUrl::addQueryItem(const QString &key, const QString &value)
{ QUrlQuery q(*this); q.addQueryItem(key, value); setQuery(q.query()); } { QUrlQuery q(*this); q.addQueryItem(key, value); setQuery(q); }
inline QList<QPair<QString, QString> > QUrl::queryItems() const inline QList<QPair<QString, QString> > QUrl::queryItems() const
{ return QUrlQuery(*this).queryItems(); } { return QUrlQuery(*this).queryItems(); }
inline bool QUrl::hasQueryItem(const QString &key) const inline bool QUrl::hasQueryItem(const QString &key) const
@ -128,7 +128,7 @@ inline QString QUrl::queryItemValue(const QString &key) const
inline QStringList QUrl::allQueryItemValues(const QString &key) const inline QStringList QUrl::allQueryItemValues(const QString &key) const
{ return QUrlQuery(*this).allQueryItemValues(key); } { return QUrlQuery(*this).allQueryItemValues(key); }
inline void QUrl::removeQueryItem(const QString &key) inline void QUrl::removeQueryItem(const QString &key)
{ QUrlQuery q(*this); q.removeQueryItem(key); setQuery(q.query()); } { QUrlQuery q(*this); q.removeQueryItem(key); setQuery(q); }
inline void QUrl::removeAllQueryItems(const QString &key) inline void QUrl::removeAllQueryItems(const QString &key)
{ QUrlQuery q(*this); q.removeAllQueryItems(key); } { QUrlQuery q(*this); q.removeAllQueryItems(key); }
#endif #endif