diff options
-rw-r--r-- | src/corelib/io/qurl.cpp | 31 | ||||
-rw-r--r-- | src/corelib/io/qurl.h | 3 | ||||
-rw-r--r-- | tests/auto/corelib/io/qurl/tst_qurl.cpp | 21 |
3 files changed, 55 insertions, 0 deletions
diff --git a/src/corelib/io/qurl.cpp b/src/corelib/io/qurl.cpp index 2a439b3a7c..22a0cfdbae 100644 --- a/src/corelib/io/qurl.cpp +++ b/src/corelib/io/qurl.cpp @@ -3765,6 +3765,37 @@ QString QUrl::errorString() const } /*! + \since 5.1 + + Converts a list of \a urls into a list of QStrings, using toString(\a options). +*/ +QStringList QUrl::toStringList(const QList<QUrl> &urls, FormattingOptions options) +{ + QStringList lst; + lst.reserve(urls.size()); + foreach (const QUrl &url, urls) + lst.append(url.toString(options)); + return lst; + +} + +/*! + \since 5.1 + + Converts a list of strings representing \a urls into a list of urls, using QUrl(str, \a mode). + Note that this means all strings must be urls, not for instance local paths. +*/ +QList<QUrl> QUrl::fromStringList(const QStringList &urls, ParsingMode mode) +{ + QList<QUrl> lst; + lst.reserve(urls.size()); + foreach (const QString &str, urls) { + lst.append(QUrl(str, mode)); + } + return lst; +} + +/*! \typedef QUrl::DataPtr \internal */ diff --git a/src/corelib/io/qurl.h b/src/corelib/io/qurl.h index c45708cc1a..a9bedb77c3 100644 --- a/src/corelib/io/qurl.h +++ b/src/corelib/io/qurl.h @@ -322,6 +322,9 @@ public: static QString fromAce(const QByteArray &); static QByteArray toAce(const QString &); static QStringList idnWhitelist(); + static QStringList toStringList(const QList<QUrl> &uris, FormattingOptions options = FormattingOptions(PrettyDecoded)); + static QList<QUrl> fromStringList(const QStringList &uris, ParsingMode mode = TolerantMode); + static void setIdnWhitelist(const QStringList &); friend Q_CORE_EXPORT uint qHash(const QUrl &url, uint seed = 0) Q_DECL_NOTHROW; diff --git a/tests/auto/corelib/io/qurl/tst_qurl.cpp b/tests/auto/corelib/io/qurl/tst_qurl.cpp index ec402dd986..1b2c8da565 100644 --- a/tests/auto/corelib/io/qurl/tst_qurl.cpp +++ b/tests/auto/corelib/io/qurl/tst_qurl.cpp @@ -79,6 +79,8 @@ private slots: void toString(); void toString_constructed_data(); void toString_constructed(); + void toAndFromStringList_data(); + void toAndFromStringList(); void isParentOf_data(); void isParentOf(); void toLocalFile_data(); @@ -941,6 +943,25 @@ void tst_QUrl::toString() QCOMPARE(url.toString(QUrl::FormattingOptions(options)), string); } +void tst_QUrl::toAndFromStringList_data() +{ + QTest::addColumn<QStringList>("strings"); + + QTest::newRow("empty") << QStringList(); + QTest::newRow("local") << (QStringList() << "file:///tmp" << "file:///"); + QTest::newRow("remote") << (QStringList() << "http://qt-project.org"); +} + +void tst_QUrl::toAndFromStringList() +{ + QFETCH(QStringList, strings); + + const QList<QUrl> urls = QUrl::fromStringList(strings); + QCOMPARE(urls.count(), strings.count()); + const QStringList converted = QUrl::toStringList(urls); + QCOMPARE(converted, strings); +} + //### more tests ... what do we expect ... void tst_QUrl::isParentOf_data() { |