aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/imageviewer
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@theqtcompany.com>2016-03-15 14:18:20 +0100
committerFriedemann Kleint <Friedemann.Kleint@theqtcompany.com>2016-03-18 11:53:13 +0000
commitf393da34513b37dc61591214b5279184c360c89e (patch)
tree63345681b372f269a94bb2b388cab3f9c012484a /src/plugins/imageviewer
parent3e040d4c3d78b54c484412b69b01d297841a0d52 (diff)
ImageViewer: Remove class ImageViewerActionHandler.
Create the actions in ImageViewerPlugin and use lambdas instead of a QSignalMapper. Change-Id: Ic74622ca5e9daf6f0d367d00b709d732153dc62e Reviewed-by: Alessandro Portale <alessandro.portale@theqtcompany.com>
Diffstat (limited to 'src/plugins/imageviewer')
-rw-r--r--src/plugins/imageviewer/imageviewer.cpp1
-rw-r--r--src/plugins/imageviewer/imageviewer.pro6
-rw-r--r--src/plugins/imageviewer/imagevieweractionhandler.cpp130
-rw-r--r--src/plugins/imageviewer/imagevieweractionhandler.h65
-rw-r--r--src/plugins/imageviewer/imageviewerfactory.cpp5
-rw-r--r--src/plugins/imageviewer/imageviewerfactory.h9
-rw-r--r--src/plugins/imageviewer/imageviewerplugin.cpp70
-rw-r--r--src/plugins/imageviewer/imageviewerplugin.h9
8 files changed, 80 insertions, 215 deletions
diff --git a/src/plugins/imageviewer/imageviewer.cpp b/src/plugins/imageviewer/imageviewer.cpp
index c979c93fd4..a2ad9225ca 100644
--- a/src/plugins/imageviewer/imageviewer.cpp
+++ b/src/plugins/imageviewer/imageviewer.cpp
@@ -26,7 +26,6 @@
#include "imageviewer.h"
#include "imageviewerfile.h"
-#include "imagevieweractionhandler.h"
#include "imageviewerconstants.h"
#include "imageview.h"
#include "ui_imageviewertoolbar.h"
diff --git a/src/plugins/imageviewer/imageviewer.pro b/src/plugins/imageviewer/imageviewer.pro
index 6855222ba2..df0bf03215 100644
--- a/src/plugins/imageviewer/imageviewer.pro
+++ b/src/plugins/imageviewer/imageviewer.pro
@@ -6,16 +6,14 @@ HEADERS += \
imageviewerfile.h \
imageviewer.h \
imageview.h \
- imageviewerconstants.h \
- imagevieweractionhandler.h
+ imageviewerconstants.h
SOURCES += \
imageviewerplugin.cpp \
imageviewerfactory.cpp \
imageviewerfile.cpp \
imageviewer.cpp \
- imageview.cpp \
- imagevieweractionhandler.cpp
+ imageview.cpp
RESOURCES += \
imageviewer.qrc
diff --git a/src/plugins/imageviewer/imagevieweractionhandler.cpp b/src/plugins/imageviewer/imagevieweractionhandler.cpp
deleted file mode 100644
index b183335f5b..0000000000
--- a/src/plugins/imageviewer/imagevieweractionhandler.cpp
+++ /dev/null
@@ -1,130 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 Denis Mingulov.
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of Qt Creator.
-**
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-****************************************************************************/
-
-#include "imagevieweractionhandler.h"
-#include "imageviewer.h"
-#include "imageviewerconstants.h"
-
-#include <coreplugin/icore.h>
-#include <coreplugin/actionmanager/actionmanager.h>
-#include <coreplugin/actionmanager/command.h>
-#include <coreplugin/editormanager/editormanager.h>
-#include <coreplugin/id.h>
-
-#include <QAction>
-#include <QList>
-#include <QSignalMapper>
-
-namespace ImageViewer {
-namespace Internal {
-
-enum SupportedActions {
- ZoomIn = 0,
- ZoomOut,
- OriginalSize,
- FitToScreen,
- Background,
- Outline,
- ToggleAnimation
-};
-
-ImageViewerActionHandler::ImageViewerActionHandler(QObject *parent) :
- QObject(parent), m_signalMapper(new QSignalMapper(this))
-{
- connect(m_signalMapper, SIGNAL(mapped(int)), SLOT(actionTriggered(int)));
-}
-
-void ImageViewerActionHandler::actionTriggered(int supportedAction)
-{
- Core::IEditor *editor = Core::EditorManager::currentEditor();
- ImageViewer *viewer = qobject_cast<ImageViewer *>(editor);
- if (!viewer)
- return;
-
- SupportedActions action = static_cast<SupportedActions>(supportedAction);
- switch (action) {
- case ZoomIn:
- viewer->zoomIn();
- break;
- case ZoomOut:
- viewer->zoomOut();
- break;
- case OriginalSize:
- viewer->resetToOriginalSize();
- break;
- case FitToScreen:
- viewer->fitToScreen();
- break;
- case Background:
- viewer->switchViewBackground();
- break;
- case Outline:
- viewer->switchViewOutline();
- break;
- case ToggleAnimation:
- viewer->togglePlay();
- break;
- default:
- break;
- }
-}
-
-void ImageViewerActionHandler::createActions()
-{
- registerNewAction(ZoomIn, Constants::ACTION_ZOOM_IN, tr("Zoom In"),
- QKeySequence(tr("Ctrl++")));
- registerNewAction(ZoomOut, Constants::ACTION_ZOOM_OUT, tr("Zoom Out"),
- QKeySequence(tr("Ctrl+-")));
- registerNewAction(OriginalSize, Constants::ACTION_ORIGINAL_SIZE, tr("Original Size"),
- QKeySequence(Core::UseMacShortcuts ? tr("Meta+0") : tr("Ctrl+0")));
- registerNewAction(FitToScreen, Constants::ACTION_FIT_TO_SCREEN, tr("Fit To Screen"),
- QKeySequence(tr("Ctrl+=")));
- registerNewAction(Background, Constants::ACTION_BACKGROUND, tr("Switch Background"),
- QKeySequence(tr("Ctrl+[")));
- registerNewAction(Outline, Constants::ACTION_OUTLINE, tr("Switch Outline"),
- QKeySequence(tr("Ctrl+]")));
- registerNewAction(ToggleAnimation, Constants::ACTION_TOGGLE_ANIMATION, tr("Toggle Animation"),
- QKeySequence());
-}
-
-/*!
- Creates a new action with the internal id \a actionId, command id \a id,
- and keyboard shortcut \a key, and registers it in the action manager.
-*/
-
-void ImageViewerActionHandler::registerNewAction(int actionId, Core::Id id,
- const QString &title, const QKeySequence &key)
-{
- Core::Context context(Constants::IMAGEVIEWER_ID);
- QAction *action = new QAction(title, this);
- Core::Command *command = Core::ActionManager::registerAction(action, id, context);
- command->setDefaultKeySequence(key);
- connect(action, SIGNAL(triggered()), m_signalMapper, SLOT(map()));
- m_signalMapper->setMapping(action, actionId);
-}
-
-} // namespace Internal
-} // namespace ImageViewer
diff --git a/src/plugins/imageviewer/imagevieweractionhandler.h b/src/plugins/imageviewer/imagevieweractionhandler.h
deleted file mode 100644
index a6074bed78..0000000000
--- a/src/plugins/imageviewer/imagevieweractionhandler.h
+++ /dev/null
@@ -1,65 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 Denis Mingulov.
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of Qt Creator.
-**
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-****************************************************************************/
-
-#ifndef IMAGEVIEWERACTIONHANDLER_H
-#define IMAGEVIEWERACTIONHANDLER_H
-
-#include <coreplugin/id.h>
-
-#include <QObject>
-
-QT_BEGIN_NAMESPACE
-class QKeySequence;
-class QSignalMapper;
-QT_END_NAMESPACE
-
-namespace ImageViewer {
-namespace Internal {
-
-class ImageViewerActionHandler : public QObject
-{
- Q_OBJECT
-
-public:
- explicit ImageViewerActionHandler(QObject *parent = 0);
- void createActions();
-
-public slots:
- void actionTriggered(int supportedAction);
-
-protected:
-
- void registerNewAction(int actionId, Core::Id id, const QString &title,
- const QKeySequence &key);
-
-private:
- QSignalMapper *m_signalMapper;
-};
-
-} // namespace Internal
-} // namespace ImageViewer
-
-#endif // IMAGEVIEWERACTIONHANDLER_H
diff --git a/src/plugins/imageviewer/imageviewerfactory.cpp b/src/plugins/imageviewer/imageviewerfactory.cpp
index 048625ec4d..d341936967 100644
--- a/src/plugins/imageviewer/imageviewerfactory.cpp
+++ b/src/plugins/imageviewer/imageviewerfactory.cpp
@@ -57,10 +57,5 @@ Core::IEditor *ImageViewerFactory::createEditor()
return new ImageViewer();
}
-void ImageViewerFactory::extensionsInitialized()
-{
- m_actionHandler.createActions();
-}
-
} // namespace Internal
} // namespace ImageViewer
diff --git a/src/plugins/imageviewer/imageviewerfactory.h b/src/plugins/imageviewer/imageviewerfactory.h
index 73d1a407e6..d288ddaf4b 100644
--- a/src/plugins/imageviewer/imageviewerfactory.h
+++ b/src/plugins/imageviewer/imageviewerfactory.h
@@ -27,8 +27,6 @@
#ifndef IMAGEVIEWERFACTORY_H
#define IMAGEVIEWERFACTORY_H
-#include "imagevieweractionhandler.h"
-
#include <coreplugin/editormanager/ieditorfactory.h>
#include <coreplugin/editormanager/ieditor.h>
#include <coreplugin/idocument.h>
@@ -36,8 +34,6 @@
namespace ImageViewer {
namespace Internal {
-class ImageViewerActionHandler;
-
class ImageViewerFactory : public Core::IEditorFactory
{
Q_OBJECT
@@ -45,11 +41,6 @@ public:
explicit ImageViewerFactory(QObject *parent = 0);
Core::IEditor *createEditor();
-
- void extensionsInitialized();
-
-private:
- ImageViewerActionHandler m_actionHandler;
};
} // namespace Internal
diff --git a/src/plugins/imageviewer/imageviewerplugin.cpp b/src/plugins/imageviewer/imageviewerplugin.cpp
index a3cb9b193b..e0420f2bfc 100644
--- a/src/plugins/imageviewer/imageviewerplugin.cpp
+++ b/src/plugins/imageviewer/imageviewerplugin.cpp
@@ -25,12 +25,18 @@
****************************************************************************/
#include "imageviewerplugin.h"
+#include "imageviewer.h"
#include "imageviewerfactory.h"
#include "imageviewerconstants.h"
+#include <QAction>
+#include <QCoreApplication>
#include <QDebug>
#include <coreplugin/icore.h>
+#include <coreplugin/actionmanager/actionmanager.h>
+#include <coreplugin/actionmanager/command.h>
+#include <coreplugin/editormanager/editormanager.h>
#include <coreplugin/id.h>
#include <extensionsystem/pluginmanager.h>
#include <utils/mimetypes/mimedatabase.h>
@@ -52,9 +58,71 @@ bool ImageViewerPlugin::initialize(const QStringList &arguments, QString *errorM
return true;
}
+static inline ImageViewer *currentImageViewer()
+{
+ return qobject_cast<ImageViewer *>(Core::EditorManager::currentEditor());
+}
+
void ImageViewerPlugin::extensionsInitialized()
{
- m_factory->extensionsInitialized();
+ QAction *a = registerNewAction(Constants::ACTION_ZOOM_IN, tr("Zoom In"),
+ QKeySequence(tr("Ctrl++")));
+ connect(a, &QAction::triggered, this, [this]() {
+ if (ImageViewer *iv = currentImageViewer())
+ iv->zoomIn();
+ });
+
+ a = registerNewAction(Constants::ACTION_ZOOM_OUT, tr("Zoom Out"),
+ QKeySequence(tr("Ctrl+-")));
+ connect(a, &QAction::triggered, this, [this]() {
+ if (ImageViewer *iv = currentImageViewer())
+ iv->zoomOut();
+ });
+
+ a = registerNewAction(Constants::ACTION_ORIGINAL_SIZE, tr("Original Size"),
+ QKeySequence(Core::UseMacShortcuts ? tr("Meta+0") : tr("Ctrl+0")));
+ connect(a, &QAction::triggered, this, [this]() {
+ if (ImageViewer *iv = currentImageViewer())
+ iv->resetToOriginalSize();
+ });
+
+ a = registerNewAction(Constants::ACTION_FIT_TO_SCREEN, tr("Fit To Screen"),
+ QKeySequence(tr("Ctrl+=")));
+ connect(a, &QAction::triggered, this, [this]() {
+ if (ImageViewer *iv = currentImageViewer())
+ iv->fitToScreen();
+ });
+
+ a = registerNewAction(Constants::ACTION_BACKGROUND, tr("Switch Background"),
+ QKeySequence(tr("Ctrl+[")));
+ connect(a, &QAction::triggered, this, [this]() {
+ if (ImageViewer *iv = currentImageViewer())
+ iv->switchViewBackground();
+ });
+
+ a = registerNewAction(Constants::ACTION_OUTLINE, tr("Switch Outline"),
+ QKeySequence(tr("Ctrl+]")));
+ connect(a, &QAction::triggered, this, [this]() {
+ if (ImageViewer *iv = currentImageViewer())
+ iv->switchViewOutline();
+ });
+
+ a = registerNewAction(Constants::ACTION_TOGGLE_ANIMATION, tr("Toggle Animation"),
+ QKeySequence());
+ connect(a, &QAction::triggered, this, [this]() {
+ if (ImageViewer *iv = currentImageViewer())
+ iv->togglePlay();
+ });
+}
+
+QAction *ImageViewerPlugin::registerNewAction(Core::Id id,
+ const QString &title, const QKeySequence &key)
+{
+ Core::Context context(Constants::IMAGEVIEWER_ID);
+ QAction *action = new QAction(title, this);
+ Core::Command *command = Core::ActionManager::registerAction(action, id, context);
+ command->setDefaultKeySequence(key);
+ return action;
}
} // namespace Internal
diff --git a/src/plugins/imageviewer/imageviewerplugin.h b/src/plugins/imageviewer/imageviewerplugin.h
index 24a06391b7..841295dd88 100644
--- a/src/plugins/imageviewer/imageviewerplugin.h
+++ b/src/plugins/imageviewer/imageviewerplugin.h
@@ -32,6 +32,13 @@
#include <QPointer>
#include <QtPlugin>
+QT_BEGIN_NAMESPACE
+class QAction;
+class QKeySequence;
+QT_END_NAMESPACE
+
+namespace Core { class Id; }
+
namespace ImageViewer {
namespace Internal {
@@ -49,6 +56,8 @@ public:
void extensionsInitialized();
private:
+ QAction *registerNewAction(Core::Id id, const QString &title, const QKeySequence &key);
+
QPointer<ImageViewerFactory> m_factory;
};