diff options
-rw-r--r-- | src/application.cpp | 38 |
1 files changed, 13 insertions, 25 deletions
diff --git a/src/application.cpp b/src/application.cpp index 3817098d..ebd99004 100644 --- a/src/application.cpp +++ b/src/application.cpp @@ -201,29 +201,24 @@ KUrl Application::guessUrlFromString(const QString &string) QString urlStr = string.trimmed(); QRegExp test(QLatin1String("^[a-zA-Z]+\\:.*")); + // Might be a file. + if (QFile::exists(urlStr)) + { + QFileInfo info(urlStr); + return KUrl::fromPath(info.absoluteFilePath()); + } + // Check if it looks like a qualified URL. Try parsing it and see. - bool hasSchema = test.exactMatch(urlStr); - - if (hasSchema) + if (test.exactMatch(urlStr)) { - QUrl qurl(urlStr, QUrl::TolerantMode); - KUrl url(qurl); - + KUrl url(urlStr); + if (url.isValid()) { return url; } } - - // Might be a file. - if (QFile::exists(urlStr)) - { - QFileInfo info(urlStr); - return KUrl::fromPath(info.absoluteFilePath()); - } - - // Might be a shorturl - try to detect the schema. - if (!hasSchema) + else // Might be a shorturl - try to detect the schema. { int dotIndex = urlStr.indexOf(QLatin1Char('.')); @@ -240,17 +235,10 @@ KUrl Application::guessUrlFromString(const QString &string) } } } - + // Fall back to QUrl's own tolerant parser. - QUrl qurl = QUrl(string, QUrl::TolerantMode); - KUrl url(qurl); + KUrl url = KUrl(string); - // finally for cases where the user just types in a hostname add http - if (qurl.scheme().isEmpty()) - { - qurl = QUrl(QLatin1String("http://") + string, QUrl::TolerantMode); - url = KUrl(qurl); - } return url; } |