diff options
Diffstat (limited to 'src/plugins/imageviewer')
-rw-r--r-- | src/plugins/imageviewer/imageviewer.cpp | 1 | ||||
-rw-r--r-- | src/plugins/imageviewer/imageviewer.pro | 6 | ||||
-rw-r--r-- | src/plugins/imageviewer/imagevieweractionhandler.cpp | 130 | ||||
-rw-r--r-- | src/plugins/imageviewer/imagevieweractionhandler.h | 65 | ||||
-rw-r--r-- | src/plugins/imageviewer/imageviewerfactory.cpp | 5 | ||||
-rw-r--r-- | src/plugins/imageviewer/imageviewerfactory.h | 9 | ||||
-rw-r--r-- | src/plugins/imageviewer/imageviewerplugin.cpp | 70 | ||||
-rw-r--r-- | src/plugins/imageviewer/imageviewerplugin.h | 9 |
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; }; |