Added option to open link externally in internal browser.

This commit is contained in:
Martin Rotter 2014-09-16 07:59:56 +02:00
parent 987566196b
commit d15d2460bb
3 changed files with 17 additions and 7 deletions

View File

@ -30,9 +30,7 @@ class WebPage : public QWebPage {
virtual ~WebPage(); virtual ~WebPage();
protected: protected:
bool acceptNavigationRequest(QWebFrame *frame, bool acceptNavigationRequest(QWebFrame *frame, const QNetworkRequest &request, NavigationType type);
const QNetworkRequest &request,
NavigationType type);
}; };
#endif // BASEWEBPAGE_H #endif // BASEWEBPAGE_H

View File

@ -22,6 +22,7 @@
#include "miscellaneous/skinfactory.h" #include "miscellaneous/skinfactory.h"
#include "miscellaneous/iconfactory.h" #include "miscellaneous/iconfactory.h"
#include "network-web/webpage.h" #include "network-web/webpage.h"
#include "network-web/webfactory.h"
#include <QStyleOptionFrameV3> #include <QStyleOptionFrameV3>
#include <QAction> #include <QAction>
@ -61,17 +62,21 @@ void WebView::openLinkInNewTab() {
emit linkMiddleClicked(m_contextLinkUrl); emit linkMiddleClicked(m_contextLinkUrl);
} }
void WebView::openLinkExternally() {
WebFactory::instance()->openUrlInExternalBrowser(m_contextLinkUrl.toString());
}
void WebView::openImageInNewTab() { void WebView::openImageInNewTab() {
emit linkMiddleClicked(m_contextImageUrl); emit linkMiddleClicked(m_contextImageUrl);
} }
void WebView::createConnections() { void WebView::createConnections() {
connect(this, SIGNAL(loadFinished(bool)), this, SLOT(onLoadFinished(bool))); connect(this, SIGNAL(loadFinished(bool)), this, SLOT(onLoadFinished(bool)));
connect(this, SIGNAL(customContextMenuRequested(QPoint)), connect(this, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(popupContextMenu(QPoint)));
this, SLOT(popupContextMenu(QPoint)));
connect(m_actionOpenLinkNewTab, SIGNAL(triggered()), this, SLOT(openLinkInNewTab())); connect(m_actionOpenLinkNewTab, SIGNAL(triggered()), this, SLOT(openLinkInNewTab()));
connect(m_actionOpenImageNewTab, SIGNAL(triggered()), this, SLOT(openImageInNewTab())); connect(m_actionOpenImageNewTab, SIGNAL(triggered()), this, SLOT(openImageInNewTab()));
connect(m_actionOpenLinkExternally, SIGNAL(triggered()), this, SLOT(openLinkExternally()));
} }
void WebView::setupIcons() { void WebView::setupIcons() {
@ -84,8 +89,9 @@ void WebView::setupIcons() {
m_actionCopyImageUrl->setIcon(qApp->icons()->fromTheme("edit-copy")); m_actionCopyImageUrl->setIcon(qApp->icons()->fromTheme("edit-copy"));
#endif #endif
m_actionOpenLinkThisTab->setIcon(qApp->icons()->fromTheme("text-html")); m_actionOpenLinkThisTab->setIcon(qApp->icons()->fromTheme("item-open-internal"));
m_actionOpenLinkNewTab->setIcon(qApp->icons()->fromTheme("text-html")); m_actionOpenLinkNewTab->setIcon(qApp->icons()->fromTheme("item-open-internal"));
m_actionOpenLinkExternally->setIcon(qApp->icons()->fromTheme("item-open-external"));
m_actionOpenImageNewTab->setIcon(qApp->icons()->fromTheme("edit-copy-image")); m_actionOpenImageNewTab->setIcon(qApp->icons()->fromTheme("edit-copy-image"));
} }
@ -133,6 +139,9 @@ void WebView::initializeActions() {
m_actionOpenLinkThisTab->setText(tr("Follow link")); m_actionOpenLinkThisTab->setText(tr("Follow link"));
m_actionOpenLinkThisTab->setToolTip(tr("Open the hyperlink in this tab.")); m_actionOpenLinkThisTab->setToolTip(tr("Open the hyperlink in this tab."));
m_actionOpenLinkExternally = new QAction(tr("Open link in external browser"), this);
m_actionOpenLinkExternally->setToolTip(tr("Open the hyperlink in external browser."));
m_actionOpenImageNewTab = pageAction(QWebPage::OpenImageInNewWindow); m_actionOpenImageNewTab = pageAction(QWebPage::OpenImageInNewWindow);
m_actionOpenImageNewTab->setParent(this); m_actionOpenImageNewTab->setParent(this);
m_actionOpenImageNewTab->setText(tr("Open image in new tab")); m_actionOpenImageNewTab->setText(tr("Open image in new tab"));
@ -177,6 +186,7 @@ void WebView::popupContextMenu(const QPoint &pos) {
context_menu.addMenu(&link_submenu); context_menu.addMenu(&link_submenu);
link_submenu.addAction(m_actionOpenLinkThisTab); link_submenu.addAction(m_actionOpenLinkThisTab);
link_submenu.addAction(m_actionOpenLinkNewTab); link_submenu.addAction(m_actionOpenLinkNewTab);
link_submenu.addAction(m_actionOpenLinkExternally);
link_submenu.addAction(m_actionCopyLink); link_submenu.addAction(m_actionCopyLink);
} }

View File

@ -62,6 +62,7 @@ class WebView : public QWebView {
void copySelectedText(); void copySelectedText();
void openLinkInNewTab(); void openLinkInNewTab();
void openLinkExternally();
void openImageInNewTab(); void openImageInNewTab();
// Provides custom context menu. // Provides custom context menu.
@ -98,6 +99,7 @@ class WebView : public QWebView {
QAction *m_actionOpenLinkThisTab; QAction *m_actionOpenLinkThisTab;
QAction *m_actionOpenLinkNewTab; QAction *m_actionOpenLinkNewTab;
QAction *m_actionOpenLinkExternally;
QAction *m_actionOpenImageNewTab; QAction *m_actionOpenImageNewTab;
QPoint m_gestureOrigin; QPoint m_gestureOrigin;