Home
Phabricator
Search
Log In
Files
F360125
configurable-zoom-shortcuts-attempt.patch
igorkushnir (Igor Kushnir)
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Subscribers
None
File Metadata
Details
File Info
Storage
Attached
Author
igorkushnir
Created
Oct 12 2016, 6:34 PM
Size
7 KB
Mime Type
text/x-diff
Engine
blob
Format
Raw Data
Handle
291231
Attached To
D3040: Allow scaling documentation view (BUG 285162)
configurable-zoom-shortcuts-attempt.patch
View Options
From 7aa4041d62d07e54b5c12164372c2a31daa7f060 Mon Sep 17 00:00:00 2001
From: Igor Kushnir <igorkuo@gmail.com>
Date: Thu, 6 Oct 2016 21:30:28 +0300
Subject: [PATCH] Allow assigning shortcuts to documentation zoom actions
TODO: move documentation zoom actions into a shortcut subgroup.
This will make it clear what these actions stand for.
This will eliminate possible collisions with future zoom actions in other components.
---
documentation/documentationview.cpp | 12 +++++++++++-
documentation/documentationview.h | 4 ++++
documentation/standarddocumentationview.cpp | 15 +++++++++++----
documentation/standarddocumentationview.h | 3 +++
shell/documentationcontroller.cpp | 16 ++++++++++++----
5 files changed, 41 insertions(+), 9 deletions(-)
diff --git a/documentation/documentationview.cpp b/documentation/documentationview.cpp
index a927ab6..49c3365 100644
--- a/documentation/documentationview.cpp
+++ b/documentation/documentationview.cpp
@@ -38,6 +38,7 @@
#include <interfaces/idocumentationcontroller.h>
#include <interfaces/iplugincontroller.h>
#include "documentationfindwidget.h"
+#include "standarddocumentationview.h"
#include "debug.h"
Q_LOGGING_CATEGORY(DOCUMENTATION, "kdevplatform.documentation")
@@ -46,7 +47,7 @@ Q_LOGGING_CATEGORY(DOCUMENTATION, "kdevplatform.documentation")
using namespace KDevelop;
DocumentationView::DocumentationView(QWidget* parent, ProvidersModel* model)
- : QWidget(parent), mProvidersModel(model)
+ : QWidget(parent), mProvidersModel(model), mZoomActions{nullptr}
{
setWindowIcon(QIcon::fromTheme(QStringLiteral("documentation"), windowIcon()));
setWindowTitle(i18n("Documentation"));
@@ -102,6 +103,11 @@ DocumentationView::DocumentationView(QWidget* parent, ProvidersModel* model)
QMetaObject::invokeMethod(this, "initialize", Qt::QueuedConnection);
}
+void DocumentationView::setZoomActions(KDevelop::ZoomActions* zoomActions)
+{
+ mZoomActions = zoomActions;
+}
+
void DocumentationView::initialize()
{
mProviders->setModel(mProvidersModel);
@@ -228,6 +234,10 @@ void DocumentationView::updateView()
mFindDoc->hide();
}
+ if (auto* const standardView = qobject_cast<StandardDocumentationView*>(w)) {
+ standardView->setZoomActions(mZoomActions);
+ }
+
QLayoutItem* findWidget = layout()->takeAt(1);
layout()->addWidget(w);
layout()->addItem(findWidget);
diff --git a/documentation/documentationview.h b/documentation/documentationview.h
index c7a0822..3635c3f 100644
--- a/documentation/documentationview.h
+++ b/documentation/documentationview.h
@@ -29,6 +29,7 @@
namespace KDevelop {
class IPlugin;
class DocumentationFindWidget;
+ class ZoomActions;
}
class QModelIndex;
@@ -42,6 +43,8 @@ class KDEVPLATFORMDOCUMENTATION_EXPORT DocumentationView : public QWidget
public:
DocumentationView(QWidget* parent, ProvidersModel* m);
+ void setZoomActions(KDevelop::ZoomActions* zoomActions);
+
void showDocumentation(const KDevelop::IDocumentation::Ptr& doc);
public slots:
@@ -70,6 +73,7 @@ private:
QComboBox* mProviders;
ProvidersModel* mProvidersModel;
KDevelop::DocumentationFindWidget* mFindDoc;
+ KDevelop::ZoomActions* mZoomActions;
};
class KDEVPLATFORMDOCUMENTATION_EXPORT ProvidersModel : public QAbstractListModel
diff --git a/documentation/standarddocumentationview.cpp b/documentation/standarddocumentationview.cpp
index a284f17..349361c 100644
--- a/documentation/standarddocumentationview.cpp
+++ b/documentation/standarddocumentationview.cpp
@@ -30,7 +30,6 @@
#include <QFontDatabase>
#include <QIcon>
#include <QMenu>
-#include <QScopedPointer>
using namespace KDevelop;
@@ -38,7 +37,7 @@ class KDevelop::StandardDocumentationViewPrivate
{
public:
ZoomController* m_zoomController = nullptr;
- QScopedPointer<ZoomActions> m_zoomActions;
+ ZoomActions* m_zoomActions = nullptr;
IDocumentation::Ptr m_doc;
};
@@ -91,9 +90,17 @@ void StandardDocumentationView::initZoom(const QString& configSubGroup)
connect(d->m_zoomController, &ZoomController::factorChanged,
this, &StandardDocumentationView::updateZoomFactor);
updateZoomFactor(d->m_zoomController->factor());
+}
- d->m_zoomActions.reset(new ZoomActions());
- d->m_zoomActions->setZoomController(d->m_zoomController);
+void StandardDocumentationView::setZoomActions(ZoomActions* zoomActions)
+{
+ if (d->m_zoomActions == zoomActions)
+ return;
+ if (d->m_zoomActions)
+ d->m_zoomActions->setZoomController(nullptr);
+ d->m_zoomActions = zoomActions;
+ if (d->m_zoomActions)
+ d->m_zoomActions->setZoomController(d->m_zoomController);
}
void StandardDocumentationView::setDocumentation(const IDocumentation::Ptr& doc)
diff --git a/documentation/standarddocumentationview.h b/documentation/standarddocumentationview.h
index 768f97a..77e5e38 100644
--- a/documentation/standarddocumentationview.h
+++ b/documentation/standarddocumentationview.h
@@ -33,6 +33,7 @@ class QAction;
namespace KDevelop {
+class ZoomActions;
class StandardDocumentationViewPrivate;
/**
@@ -55,6 +56,8 @@ public:
*/
void initZoom(const QString& configSubGroup);
+ void setZoomActions(ZoomActions* zoomActions);
+
void setDocumentation(const IDocumentation::Ptr& doc);
/**
diff --git a/shell/documentationcontroller.cpp b/shell/documentationcontroller.cpp
index aff176d..1d71234 100644
--- a/shell/documentationcontroller.cpp
+++ b/shell/documentationcontroller.cpp
@@ -27,6 +27,7 @@
#include <interfaces/iplugincontroller.h>
#include <interfaces/iuicontroller.h>
#include <shell/core.h>
+#include <util/zoomactions.h>
#include <QAction>
@@ -89,15 +90,21 @@ Declaration* usefulDeclaration(Declaration* decl)
class DocumentationViewFactory: public KDevelop::IToolViewFactory
{
public:
- DocumentationViewFactory()
- {}
+ DocumentationViewFactory(KActionCollection& actionCollection)
+ {
+ actionCollection.addAction(QStringLiteral("documentation_view_zoom_in"), m_zoomActions.zoomInAction());
+ actionCollection.addAction(QStringLiteral("documentation_view_zoom_out"), m_zoomActions.zoomOutAction());
+ actionCollection.addAction(QStringLiteral("documentation_view_reset_zoom"), m_zoomActions.zoomResetAction());
+ }
QWidget* create(QWidget *parent = nullptr) override
{
if (!m_providersModel) {
m_providersModel.reset(new ProvidersModel);
}
- return new DocumentationView(parent, m_providersModel.data());
+ auto* result = new DocumentationView(parent, m_providersModel.data());
+ result->setZoomActions(&m_zoomActions);
+ return result;
}
Qt::DockWidgetArea defaultPosition() override { return Qt::RightDockWidgetArea; }
@@ -105,10 +112,11 @@ public:
private:
QScopedPointer<ProvidersModel> m_providersModel;
+ ZoomActions m_zoomActions;
};
DocumentationController::DocumentationController(Core* core)
- : m_factory(new DocumentationViewFactory)
+ : m_factory(new DocumentationViewFactory(*core->uiController()->activeMainWindow()->actionCollection()))
{
m_showDocumentation = core->uiController()->activeMainWindow()->actionCollection()->addAction(QStringLiteral("showDocumentation"));
m_showDocumentation->setText(i18n("Show Documentation"));
--
2.10.0
Log In to Comment