summaryrefslogtreecommitdiff
path: root/src/application.cpp
diff options
context:
space:
mode:
authorAndrea Diamantini <adjam7@gmail.com>2009-06-01 01:43:03 +0200
committerAndrea Diamantini <adjam7@gmail.com>2009-06-01 23:59:35 +0200
commit0f96a0ae5d93853d56ad723557fc58ca51b7cef0 (patch)
tree88b10962d5cf6fc06359ecf07b7f3a9d6b7bfb11 /src/application.cpp
parentRemoved unuseful download classes (diff)
downloadrekonq-0f96a0ae5d93853d56ad723557fc58ca51b7cef0.tar.xz
Moving guessUrlFromString function to Application class
Diffstat (limited to 'src/application.cpp')
-rw-r--r--src/application.cpp63
1 files changed, 61 insertions, 2 deletions
diff --git a/src/application.cpp b/src/application.cpp
index 06947e22..09a8a087 100644
--- a/src/application.cpp
+++ b/src/application.cpp
@@ -91,7 +91,7 @@ int Application::newInstance()
{
for (int i = 0; i < args->count(); ++i)
{
- KUrl url = MainWindow::guessUrlFromString(args->arg(i));
+ KUrl url = guessUrlFromString(args->arg(i));
newWebView();
mainWindow()->loadUrl(url);
}
@@ -148,7 +148,7 @@ WebView *Application::newWebView(Rekonq::OpenType type)
CookieJar *Application::cookieJar()
{
- return (CookieJar*)networkAccessManager()->cookieJar();
+ return (CookieJar *)networkAccessManager()->cookieJar();
}
@@ -193,3 +193,62 @@ KIcon Application::icon(const KUrl &url) const
}
return icon;
}
+
+
+KUrl Application::guessUrlFromString(const QString &string)
+{
+ QString urlStr = string.trimmed();
+ QRegExp test(QLatin1String("^[a-zA-Z]+\\:.*"));
+
+ // Check if it looks like a qualified URL. Try parsing it and see.
+ bool hasSchema = test.exactMatch(urlStr);
+
+ if (hasSchema)
+ {
+ QUrl qurl(urlStr, QUrl::TolerantMode);
+ KUrl url(qurl);
+
+ 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)
+ {
+ int dotIndex = urlStr.indexOf(QLatin1Char('.'));
+
+ if (dotIndex != -1)
+ {
+ QString prefix = urlStr.left(dotIndex).toLower();
+ QString schema = (prefix == QLatin1String("ftp")) ? prefix : QLatin1String("http");
+ QUrl qurl(schema + QLatin1String("://") + urlStr, QUrl::TolerantMode);
+ KUrl url(qurl);
+
+ if (url.isValid())
+ {
+ return url;
+ }
+ }
+ }
+
+ // Fall back to QUrl's own tolerant parser.
+ QUrl qurl = QUrl(string, QUrl::TolerantMode);
+ KUrl url(qurl);
+
+ // 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;
+}