summaryrefslogtreecommitdiff
path: root/src/protocolhandler.cpp
diff options
context:
space:
mode:
authorAndrea Diamantini <adjam7@gmail.com>2009-12-15 03:29:48 +0100
committerAndrea Diamantini <adjam7@gmail.com>2009-12-16 00:59:32 +0100
commitaa9521b0e0f810a9ba94d7f6c7f9100c3f69d862 (patch)
tree57dd9649ba0b69f1fa385416c9af9d78587f2de9 /src/protocolhandler.cpp
parentfix spacing (diff)
downloadrekonq-aa9521b0e0f810a9ba94d7f6c7f9100c3f69d862.tar.xz
First form of protocol handling
Diffstat (limited to 'src/protocolhandler.cpp')
-rw-r--r--src/protocolhandler.cpp101
1 files changed, 101 insertions, 0 deletions
diff --git a/src/protocolhandler.cpp b/src/protocolhandler.cpp
new file mode 100644
index 00000000..fb01b266
--- /dev/null
+++ b/src/protocolhandler.cpp
@@ -0,0 +1,101 @@
+/* ============================================================
+*
+* 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 2 of
+* the License or (at your option) version 3 or any later version
+* accepted by the membership of KDE e.V. (or its successor approved
+* by the membership of KDE e.V.), which shall act as a proxy
+* defined in Section 14 of version 3 of the license.
+*
+* 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.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program. If not, see <http://www.gnu.org/licenses/>.
+*
+* ============================================================ */
+
+
+// Self Includes
+#include "protocolhandler.h"
+
+// Local Includes
+#include "newtabpage.h"
+
+// KDE Includes
+#include <KUrl>
+#include <KRun>
+#include <KToolInvocation>
+
+// Qt Includes
+#include <QLatin1String>
+#include <QNetworkRequest>
+#include <QWebFrame>
+
+
+ProtocolHandler::ProtocolHandler()
+{
+}
+
+
+ProtocolHandler::~ProtocolHandler()
+{
+}
+
+
+bool ProtocolHandler::handle(const QNetworkRequest &request, QWebFrame *frame)
+{
+ KUrl url( request.url() );
+
+ // mailto handling
+ if ( url.protocol() == QLatin1String("mailto") )
+ {
+ KToolInvocation::invokeMailer(url);
+ return true;
+ }
+
+ if ( url.protocol() == QLatin1String("about") )
+ {
+ if( url == KUrl("about:closedTabs")
+ || url == KUrl("about:history")
+ || url == KUrl("about:bookmarks")
+ || url == KUrl("about:favorites")
+ || url == KUrl("about:home")
+ )
+ {
+ NewTabPage p(frame);
+ p.generate(url);
+
+ return true;
+ }
+ }
+
+ // "ftp" handling
+ if(url.protocol() == QLatin1String("ftp"))
+ {
+ KUrl::List list;
+ list.append(url);
+ KRun::run("dolphin %u",url,0);
+
+ return true;
+ }
+
+ // "file" handling
+ if(url.protocol() == QLatin1String("file"))
+ {
+ KUrl::List list;
+ list.append(url);
+ KRun::run("dolphin %u",url,0);
+
+ return true;
+ }
+
+ return false;
+}