From e3a8092aaaed8b596e762119ee3f165a69ff77c2 Mon Sep 17 00:00:00 2001
From: Andrea Diamantini <adjam7@gmail.com>
Date: Fri, 24 Jul 2009 02:10:05 +0200
Subject: Removed rekonqrun class and provided slots in Application one.

---
 src/CMakeLists.txt  |   1 -
 src/application.cpp | 107 ++++++++++++++++++++++++++--
 src/application.h   |  27 ++++++-
 src/mainwindow.cpp  |   2 +-
 src/rekonqrun.cpp   | 201 ----------------------------------------------------
 src/rekonqrun.h     |  84 ----------------------
 6 files changed, 127 insertions(+), 295 deletions(-)
 delete mode 100644 src/rekonqrun.cpp
 delete mode 100644 src/rekonqrun.h

diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 726ac82e..73ef1dc0 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -32,7 +32,6 @@ SET( rekonq_SRCS
     webpage.cpp
     cookiedialog.cpp
     cookieexceptiondialog.cpp
-    rekonqrun.cpp
 )
 
 
diff --git a/src/application.cpp b/src/application.cpp
index 27dcc83a..0cebac26 100644
--- a/src/application.cpp
+++ b/src/application.cpp
@@ -34,6 +34,7 @@
 #include "networkaccessmanager.h"
 #include "mainview.h"
 #include "webview.h"
+#include "urlbar.h"
 
 // KDE Includes
 #include <KCmdLineArgs>
@@ -43,8 +44,12 @@
 #include <kio/job.h>
 #include <kio/jobclasses.h>
 #include <KPassivePopup>
+#include <KToolInvocation>
 
 // Qt Includes
+#include <QRegExp>
+#include <QFile>
+#include <QFileInfo>
 #include <QtCore/QTimer>
 #include <QtWebKit/QWebSettings>
 #include <QtWebKit/QWebHistoryInterface>
@@ -84,7 +89,7 @@ int Application::newInstance()
         setWindowIcon(KIcon("rekonq"));
 
         m_mainWindow->show();
-
+        
         QTimer::singleShot(0, this, SLOT(postLaunch()));
     }
 
@@ -92,16 +97,14 @@ int Application::newInstance()
     {
         for (int i = 0; i < args->count(); ++i)
         {
-            KUrl url = guessUrlFromString(args->arg(i));
-            newWebView();
-            mainWindow()->loadUrl(url);
+               loadUrl(args->arg(i), Rekonq::New); 
         }
         args->clear();
     }
     else
     {
-        newWebView();
-        mainWindow()->slotHome();
+        m_mainWindow->mainView()->newTab();
+        m_mainWindow->slotHome();
     }
 
     return 0;
@@ -253,3 +256,95 @@ KUrl Application::guessUrlFromString(const QString &string)
     }
     return url;
 }
+
+
+void Application::loadUrl(const KUrl& url, const Rekonq::OpenType& type)
+{
+    if (url.isEmpty())
+        return;
+
+    QString scheme = url.scheme();
+
+    if (scheme == QLatin1String("mailto"))
+    {
+        KToolInvocation::invokeMailer(url);
+        return;
+    }
+
+    KUrl loadingUrl(url);
+
+    // create convenience fake api:// protocol for KDE apidox search and Qt docs
+    if (scheme == QLatin1String("api"))
+    {
+        QString path;
+        QString className = url.host().toLower();
+        if (className[0] == 'k')
+        {
+            path = QString("http://api.kde.org/new.classmapper.php?class=%1").arg(className);
+        }
+        else if (className[0] == 'q')
+        {
+            path = QString("http://doc.trolltech.com/4.5/%1.html").arg(className);
+        }
+        loadingUrl.setUrl(path);
+    }
+
+    if (loadingUrl.isRelative())
+    {
+        if(loadingUrl.path().contains('.'))
+        {
+            QString fn = loadingUrl.url(KUrl::RemoveTrailingSlash);
+            loadingUrl.setUrl("//" + fn);
+            loadingUrl.setScheme("http");
+        }
+        else
+        {
+            scheme = QLatin1String("gg");
+        }
+    }
+
+    // create convenience fake gg:// protocol, waiting for KServices learning
+    if(scheme == QLatin1String("gg"))
+    {
+        QString str = loadingUrl.path();
+        loadingUrl.setUrl( QString("http://google.com/search?&q=%1").arg(str) );
+    }
+
+    // create convenience fake wk:// protocol, waiting for KServices learning
+    if(scheme == QLatin1String("wk"))
+    {
+        QString str = loadingUrl.path();
+        loadingUrl.setUrl( QString("http://en.wikipedia.org/wiki/%1").arg(str) );
+    }
+
+
+    WebView *webView = m_mainWindow->mainView()->newTab();
+    m_mainWindow->mainView()->currentUrlBar()->setUrl(loadingUrl.prettyUrl());
+
+    switch(type)
+    {
+    case Rekonq::Default:
+        if (!ReKonfig::openTabsBack())
+        {
+            m_mainWindow->mainView()->setCurrentWidget(webView);  // this method does NOT take ownership of webView
+        }
+        break;
+    case Rekonq::New:
+        m_mainWindow->mainView()->setCurrentWidget(webView);  // this method does NOT take ownership of webView
+        break;
+    case Rekonq::Background:
+        break;
+    };
+
+    if (webView)
+    {
+        webView->setFocus();
+        webView->load(loadingUrl);
+    }
+}
+
+
+void Application::loadUrl(const QString& urlString,  const Rekonq::OpenType& type)
+{    
+    return loadUrl( guessUrlFromString(urlString), type );
+}
diff --git a/src/application.h b/src/application.h
index 24ee7d28..202cd99e 100644
--- a/src/application.h
+++ b/src/application.h
@@ -60,6 +60,18 @@ namespace Rekonq
         Download,   ///< downloading url
         Info        ///< information, (default)
     };
+
+    /**
+     * @short Open link options
+     * Different modes of opening new tab
+     */
+    enum OpenType
+    {
+        Default,    ///< open url according to users settings
+        New,        ///< open url in new tab and make it current
+        Background  ///< open url in new tab in background
+    };
+
 }
 
 
@@ -81,8 +93,6 @@ public:
 
     static KIcon icon(const KUrl &url);
 
-    static KUrl guessUrlFromString(const QString &url);
-
     static HistoryManager *historyManager();
     static CookieJar *cookieJar();
     static NetworkAccessManager *networkAccessManager();
@@ -95,7 +105,17 @@ public slots:
      */
     void slotSaveConfiguration() const;
 
+public slots:
+
+    void loadUrl( const KUrl& url,
+                  const Rekonq::OpenType& type = Rekonq::Default
+                );
+           
+    void loadUrl( const QString& urlString,
+                  const Rekonq::OpenType& type = Rekonq::Default
+                );    
 
+                
 private slots:
 
     /**
@@ -105,6 +125,9 @@ private slots:
 
 
 private:
+
+    KUrl guessUrlFromString(const QString &url);
+
     static QPointer<HistoryManager> s_historyManager;
     static QPointer<NetworkAccessManager> s_networkAccessManager;
     static QPointer<BookmarkProvider> s_bookmarkProvider;
diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp
index 54f72e61..ef51e1e0 100644
--- a/src/mainwindow.cpp
+++ b/src/mainwindow.cpp
@@ -520,7 +520,7 @@ void MainWindow::slotFileOpen()
     if (filePath.isEmpty())
         return;
 
-    loadUrl(Application::guessUrlFromString(filePath));
+    Application::instance()->loadUrl(filePath);
 }
 
 
diff --git a/src/rekonqrun.cpp b/src/rekonqrun.cpp
deleted file mode 100644
index da1f4d93..00000000
--- a/src/rekonqrun.cpp
+++ /dev/null
@@ -1,201 +0,0 @@
-/* ============================================================
-*
-* This file is a part of the rekonq project
-*
-* Copyright (C) 2009 by Andrea Diamantini <adjam7 at gmail dot com>
-*
-*
-* This program is free software; you can redistribute it
-* and/or modify it under the terms of the GNU General
-* Public License as published by the Free Software Foundation;
-* either version 3, or (at your option) any later version.
-*
-* This program is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-* GNU General Public License for more details.
-*
-* ============================================================ */
-
-
-// Self Includes
-#include "rekonqrun.h"
-#include "rekonqrun.moc"
-
-// Auto Includes
-#include "rekonq.h"
-
-// Local Includes
-#include "mainview.h"
-#include "urlbar.h"
-
-// KDE Includes
-#include <KToolInvocation>
-
-// Qt Includes
-#include <QRegExp>
-#include <QFile>
-#include <QFileInfo>
-            
-
-RekonqRun::RekonqRun(QWidget *parent = 0)
-    : QObject(parent)
-    , m_window(parent)
-{
-}
-
-
-RekonqRun::~RekonqRun()
-{
-}
-
-
-void RekonqRun::loadUrl(const KUrl& url, const Rekonq::OpenType& type)
-{
-    if (url.isEmpty())
-        return;
-
-    QString scheme = url.scheme();
-
-    if (scheme == QLatin1String("mailto"))
-    {
-        KToolInvocation::invokeMailer(url);
-        return;
-    }
-
-    KUrl loadingUrl(url);
-
-    // create convenience fake api:// protocol for KDE apidox search and Qt docs
-    if (scheme == QLatin1String("api"))
-    {
-        QString path;
-        QString className = url.host().toLower();
-        if (className[0] == 'k')
-        {
-            path = QString("http://api.kde.org/new.classmapper.php?class=%1").arg(className);
-        }
-        else if (className[0] == 'q')
-        {
-            path = QString("http://doc.trolltech.com/4.5/%1.html").arg(className);
-        }
-        loadingUrl.setUrl(path);
-    }
-
-    if (loadingUrl.isRelative())
-    {
-        if(loadingUrl.path().contains('.'))
-        {
-            QString fn = loadingUrl.url(KUrl::RemoveTrailingSlash);
-            loadingUrl.setUrl("//" + fn);
-            loadingUrl.setScheme("http");
-        }
-        else
-        {
-            scheme = QLatin1String("gg");
-        }
-    }
-
-    // create convenience fake gg:// protocol, waiting for KServices learning
-    if(scheme == QLatin1String("gg"))
-    {
-        QString str = loadingUrl.path();
-        loadingUrl.setUrl( QString("http://google.com/search?&q=%1").arg(str) );
-    }
-
-    // create convenience fake wk:// protocol, waiting for KServices learning
-    if(scheme == QLatin1String("wk"))
-    {
-        QString str = loadingUrl.path();
-        loadingUrl.setUrl( QString("http://en.wikipedia.org/wiki/%1").arg(str) );
-    }
-
-
-    WebView *webView = m_window->newTab();
-    m_window->currentUrlBar()->setUrl(loadingUrl.prettyUrl());
-
-    switch(type)
-    {
-    case Rekonq::Default:
-        if (!ReKonfig::openTabsBack())
-        {
-            setCurrentWidget(webView);  // this method does NOT take ownership of webView
-        }
-        break;
-    case Rekonq::New:
-        m_window->setCurrentWidget(webView);  // this method does NOT take ownership of webView
-        break;
-    case Rekonq::Background:
-        break;
-    };
-
-    if (webView)
-    {
-        webView->setFocus();
-        webView->load(loadingUrl);
-    }
-}
-
-
-void RekonqRun::loadUrl(const QString& urlString,  const Rekonq::OpenType& type)
-{    
-    return loadUrl( guessUrlFromString(urlString), type );
-}
-
-
-KUrl RekonqRun::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;
-}
diff --git a/src/rekonqrun.h b/src/rekonqrun.h
deleted file mode 100644
index d5113df1..00000000
--- a/src/rekonqrun.h
+++ /dev/null
@@ -1,84 +0,0 @@
-/* ============================================================
-*
-* This file is a part of the rekonq project
-*
-* Copyright (C) 2009 by Andrea Diamantini <adjam7 at gmail dot com>
-*
-*
-* This program is free software; you can redistribute it
-* and/or modify it under the terms of the GNU General
-* Public License as published by the Free Software Foundation;
-* either version 3, or (at your option) any later version.
-*
-* This program is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-* GNU General Public License for more details.
-*
-* ============================================================ */
-
-#ifndef REKONQRUN_H
-#define REKONQRUN_H
-
-// KDE Includes
-#include <KUrl>
-
-// Qt Includes
-#include <QtCore/QString>
-#include <QtGui/QWidget>
-
-namespace Rekonq
-{
-    /**
-     * @short Open link options
-     * Different modes of opening new tab
-     */
-    enum OpenType
-    {
-        Default,    ///< open url according to users settings
-        New,        ///< open url in new tab and make it current
-        Background  ///< open url in new tab in background
-    };
-}
-
-
-/**
- * RekonqRun is not inherited from KRun or KParts::BrowserRun, as probably expected.
- * We (actually) use this class just to find the REAL url to load (and load it!), so it does
- * these operations:
- *
- * - stop loading malformed urls
- * - find url scheme on relative urls
- * - find right url to load on SearchProviders (Google, Wikipedia, etc.)
- * - handle local urls (launches dolphin)
- * - guess urls from strings
- * 
-*/
-
-class RekonqRun : public QObject
-{
-    Q_OBJECT
-
-public:
-    RekonqRun(QWidget *parent = 0);
-    ~RekonqRun();
-    
-    
-public slots:
-
-    void loadUrl( const KUrl& url,
-                  const Rekonq::OpenType& type = Rekonq::Default
-                );
-           
-    void loadUrl( const QString& urlString,
-                  const Rekonq::OpenType& type = Rekonq::Default
-                );    
-             
-private:
-    
-    KUrl guessUrlFromString(const QString &url);
-
-    QWidget *m_window;
-};
-
-#endif
-- 
cgit v1.2.1