From 0f062f42b9817205aab657dcfaeaa8c3ed302889 Mon Sep 17 00:00:00 2001 From: David Faure Date: Sun, 14 Jul 2013 00:45:14 +0200 Subject: QUrl: add fileName() method. Complements QUrl::RemoveFilename. Change-Id: Ieda43364214c3b7aee43040e176e29ad48c14271 Reviewed-by: Thiago Macieira --- .../doc/snippets/code/src_corelib_io_qurl.cpp | 6 +++++ src/corelib/io/qurl.cpp | 30 ++++++++++++++++++++++ src/corelib/io/qurl.h | 1 + 3 files changed, 37 insertions(+) (limited to 'src') diff --git a/src/corelib/doc/snippets/code/src_corelib_io_qurl.cpp b/src/corelib/doc/snippets/code/src_corelib_io_qurl.cpp index 532a0e1f59..91eaf298e1 100644 --- a/src/corelib/doc/snippets/code/src_corelib_io_qurl.cpp +++ b/src/corelib/doc/snippets/code/src_corelib_io_qurl.cpp @@ -85,3 +85,9 @@ QByteArray ba = QUrl::toPercentEncoding("{a fishy string?}", "{}", "s"); qDebug(ba.constData()); // prints "{a fi%73hy %73tring%3F}" //! [6] + +//! [7] +QUrl url("http://qt-project.org/support/file.html"); +// url.adjusted(RemoveFilename) == "http://qt-project.org/support/" +// url.fileName() == "file.html" +//! [7] diff --git a/src/corelib/io/qurl.cpp b/src/corelib/io/qurl.cpp index 3d7e18fdfa..00588da15f 100644 --- a/src/corelib/io/qurl.cpp +++ b/src/corelib/io/qurl.cpp @@ -2415,6 +2415,36 @@ QString QUrl::path(ComponentFormattingOptions options) const \sa setEncodedPath(), toEncoded() */ +/*! + \since 5.2 + + Returns the name of the file, excluding the directory path. + + Note that, if this QUrl object is given a path ending in a slash, the name of the file is considered empty. + + If the path doesn't contain any slash, it is fully returned as the fileName. + + Example: + + \snippet code/src_corelib_io_qurl.cpp 7 + + The \a options argument controls how to format the file name component. All + values produce an unambiguous result. With QUrl::FullyDecoded, all + percent-encoded sequences are decoded; otherwise, the returned value may + contain some percent-encoded sequences for some control sequences not + representable in decoded form in QString. + + \sa path() +*/ +QString QUrl::fileName(ComponentFormattingOptions options) const +{ + const QString ourPath = path(options); + const int slash = ourPath.lastIndexOf(QLatin1Char('/')); + if (slash == -1) + return ourPath; + return ourPath.mid(slash + 1); +} + /*! \since 4.2 diff --git a/src/corelib/io/qurl.h b/src/corelib/io/qurl.h index 5678c7813b..3018f6d0e4 100644 --- a/src/corelib/io/qurl.h +++ b/src/corelib/io/qurl.h @@ -224,6 +224,7 @@ public: void setPath(const QString &path, ParsingMode mode = TolerantMode); QString path(ComponentFormattingOptions options = PrettyDecoded) const; + QString fileName(ComponentFormattingOptions options = PrettyDecoded) const; bool hasQuery() const; void setQuery(const QString &query, ParsingMode mode = TolerantMode); -- cgit v1.2.3