From 40d6f2d70aed138c214615ebd3b6049e6bc6228f Mon Sep 17 00:00:00 2001 From: Martin Rotter Date: Tue, 21 Jun 2016 07:55:47 +0200 Subject: [PATCH] Added some keyboard shortcuts. --- resources/text/CHANGELOG | 2 ++ src/gui/dialogs/formmain.cpp | 3 +++ src/gui/dialogs/formmain.ui | 3 +++ src/gui/messagesview.cpp | 18 ++++++++++++++++++ src/gui/tabwidget.cpp | 2 +- src/gui/webbrowser.h | 4 ++++ src/gui/webviewer.cpp | 7 +++++++ src/gui/webviewer.h | 1 + 8 files changed, 39 insertions(+), 1 deletion(-) diff --git a/resources/text/CHANGELOG b/resources/text/CHANGELOG index 225c8986c..30c65d7fd 100755 --- a/resources/text/CHANGELOG +++ b/resources/text/CHANGELOG @@ -5,6 +5,8 @@ Added: ▪ Internal message viewer is now based on QtWebEngine module which is based on Chromium project. This speeds up viewing of messages and supports newest HTML 5 or CSS 3 features. Note that this does not mean that fully featured internal web browser will come back. It will not! Only SIMPLIFIED internal web browser is now added. New message viewer is also better for viewing messages in newspaper mode. ▪ Default skin now uses Bootrstrap-powered look. ▪ Feed updates are now parallelized up to infinite number of threads. This speeds up speed of concurrent feed updates rapidly (more than 5 times). I was able to update about 160 feeds in 35 seconds. Note that this feature is still in experimental state. +▪ Middle mouse button click on any message in message list opens message in internal web browser, double click in external web browser. +▪ Any middle mouse button click on hyperlink opens it in new internal web browser tab. Changed: ▪ Minimal Qt version bumped to 5.7.0 - this will lead to some betere features in the future. diff --git a/src/gui/dialogs/formmain.cpp b/src/gui/dialogs/formmain.cpp index 3b8fd757f..e9e9d696a 100755 --- a/src/gui/dialogs/formmain.cpp +++ b/src/gui/dialogs/formmain.cpp @@ -137,6 +137,9 @@ QList FormMain::allActions() const { actions << m_ui->m_actionSelectPreviousMessage; actions << m_ui->m_actionSelectNextUnreadMessage; actions << m_ui->m_actionExpandCollapseItem; + actions << m_ui->m_actionTabNewWebBrowser; + actions << m_ui->m_actionTabsCloseAll; + actions << m_ui->m_actionTabsCloseAllExceptCurrent; return actions; } diff --git a/src/gui/dialogs/formmain.ui b/src/gui/dialogs/formmain.ui index 3b8db468e..4418eb263 100755 --- a/src/gui/dialogs/formmain.ui +++ b/src/gui/dialogs/formmain.ui @@ -710,6 +710,9 @@ New web browser tab + + Ctrl+T + diff --git a/src/gui/messagesview.cpp b/src/gui/messagesview.cpp index f651ec6ac..c9ffd1a7d 100755 --- a/src/gui/messagesview.cpp +++ b/src/gui/messagesview.cpp @@ -186,6 +186,24 @@ void MessagesView::mousePressEvent(QMouseEvent *event) { break; } + case Qt::MiddleButton: { + // Make sure that message importance is switched when user + // clicks the "important" column. + const QModelIndex clicked_index = indexAt(event->pos()); + + if (clicked_index.isValid()) { + const QModelIndex mapped_index = m_proxyModel->mapToSource(clicked_index); + const QString url = m_sourceModel->messageAt(mapped_index.row()).m_url; + + if (!url.isEmpty()) { + qApp->mainForm()->tabWidget()->addLinkedBrowser(url); + } + } + + + break; + } + default: break; } diff --git a/src/gui/tabwidget.cpp b/src/gui/tabwidget.cpp index c335c9ef3..cdec639c0 100755 --- a/src/gui/tabwidget.cpp +++ b/src/gui/tabwidget.cpp @@ -206,7 +206,7 @@ int TabWidget::addEmptyBrowser() { } int TabWidget::addLinkedBrowser(const QUrl &initial_url) { - return addBrowser(true, false, initial_url); + return addBrowser(false, false, initial_url); } int TabWidget::addLinkedBrowser(const QString &initial_url) { diff --git a/src/gui/webbrowser.h b/src/gui/webbrowser.h index c5942851a..dff36d707 100755 --- a/src/gui/webbrowser.h +++ b/src/gui/webbrowser.h @@ -50,6 +50,10 @@ class WebBrowser : public TabContent { return const_cast(this); } + WebViewer *viewer() const { + return m_webView; + } + void reloadFontSettings(); public slots: diff --git a/src/gui/webviewer.cpp b/src/gui/webviewer.cpp index c20820456..dba71b758 100755 --- a/src/gui/webviewer.cpp +++ b/src/gui/webviewer.cpp @@ -21,6 +21,9 @@ #include "miscellaneous/application.h" #include "definitions/definitions.h" #include "network-web/webpage.h" +#include "gui/dialogs/formmain.h" +#include "gui/tabwidget.h" +#include "gui/webbrowser.h" #include @@ -118,6 +121,10 @@ void WebViewer::clear() { setHtml("", QUrl(INTERNAL_URL_BLANK)); } +QWebEngineView *WebViewer::createWindow(QWebEnginePage::WebWindowType type) { + return qApp->mainForm()->tabWidget()->widget(qApp->mainForm()->tabWidget()->addBrowser(false, false))->webBrowser()->viewer(); +} + void WebViewer::wheelEvent(QWheelEvent *event) { QWebEngineView::wheelEvent(event); diff --git a/src/gui/webviewer.h b/src/gui/webviewer.h index df9cbbfad..2c84f4421 100755 --- a/src/gui/webviewer.h +++ b/src/gui/webviewer.h @@ -45,6 +45,7 @@ class WebViewer : public QWebEngineView { void clear(); protected: + QWebEngineView *createWindow(QWebEnginePage::WebWindowType type); void wheelEvent(QWheelEvent *event); signals: