forked from qt-creator/qt-creator
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>
This commit is contained in:
@@ -26,7 +26,6 @@
|
|||||||
|
|
||||||
#include "imageviewer.h"
|
#include "imageviewer.h"
|
||||||
#include "imageviewerfile.h"
|
#include "imageviewerfile.h"
|
||||||
#include "imagevieweractionhandler.h"
|
|
||||||
#include "imageviewerconstants.h"
|
#include "imageviewerconstants.h"
|
||||||
#include "imageview.h"
|
#include "imageview.h"
|
||||||
#include "ui_imageviewertoolbar.h"
|
#include "ui_imageviewertoolbar.h"
|
||||||
|
|||||||
@@ -6,16 +6,14 @@ HEADERS += \
|
|||||||
imageviewerfile.h \
|
imageviewerfile.h \
|
||||||
imageviewer.h \
|
imageviewer.h \
|
||||||
imageview.h \
|
imageview.h \
|
||||||
imageviewerconstants.h \
|
imageviewerconstants.h
|
||||||
imagevieweractionhandler.h
|
|
||||||
|
|
||||||
SOURCES += \
|
SOURCES += \
|
||||||
imageviewerplugin.cpp \
|
imageviewerplugin.cpp \
|
||||||
imageviewerfactory.cpp \
|
imageviewerfactory.cpp \
|
||||||
imageviewerfile.cpp \
|
imageviewerfile.cpp \
|
||||||
imageviewer.cpp \
|
imageviewer.cpp \
|
||||||
imageview.cpp \
|
imageview.cpp
|
||||||
imagevieweractionhandler.cpp
|
|
||||||
|
|
||||||
RESOURCES += \
|
RESOURCES += \
|
||||||
imageviewer.qrc
|
imageviewer.qrc
|
||||||
|
|||||||
@@ -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
|
|
||||||
@@ -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
|
|
||||||
@@ -57,10 +57,5 @@ Core::IEditor *ImageViewerFactory::createEditor()
|
|||||||
return new ImageViewer();
|
return new ImageViewer();
|
||||||
}
|
}
|
||||||
|
|
||||||
void ImageViewerFactory::extensionsInitialized()
|
|
||||||
{
|
|
||||||
m_actionHandler.createActions();
|
|
||||||
}
|
|
||||||
|
|
||||||
} // namespace Internal
|
} // namespace Internal
|
||||||
} // namespace ImageViewer
|
} // namespace ImageViewer
|
||||||
|
|||||||
@@ -27,8 +27,6 @@
|
|||||||
#ifndef IMAGEVIEWERFACTORY_H
|
#ifndef IMAGEVIEWERFACTORY_H
|
||||||
#define IMAGEVIEWERFACTORY_H
|
#define IMAGEVIEWERFACTORY_H
|
||||||
|
|
||||||
#include "imagevieweractionhandler.h"
|
|
||||||
|
|
||||||
#include <coreplugin/editormanager/ieditorfactory.h>
|
#include <coreplugin/editormanager/ieditorfactory.h>
|
||||||
#include <coreplugin/editormanager/ieditor.h>
|
#include <coreplugin/editormanager/ieditor.h>
|
||||||
#include <coreplugin/idocument.h>
|
#include <coreplugin/idocument.h>
|
||||||
@@ -36,8 +34,6 @@
|
|||||||
namespace ImageViewer {
|
namespace ImageViewer {
|
||||||
namespace Internal {
|
namespace Internal {
|
||||||
|
|
||||||
class ImageViewerActionHandler;
|
|
||||||
|
|
||||||
class ImageViewerFactory : public Core::IEditorFactory
|
class ImageViewerFactory : public Core::IEditorFactory
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
@@ -45,11 +41,6 @@ public:
|
|||||||
explicit ImageViewerFactory(QObject *parent = 0);
|
explicit ImageViewerFactory(QObject *parent = 0);
|
||||||
|
|
||||||
Core::IEditor *createEditor();
|
Core::IEditor *createEditor();
|
||||||
|
|
||||||
void extensionsInitialized();
|
|
||||||
|
|
||||||
private:
|
|
||||||
ImageViewerActionHandler m_actionHandler;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace Internal
|
} // namespace Internal
|
||||||
|
|||||||
@@ -25,12 +25,18 @@
|
|||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
#include "imageviewerplugin.h"
|
#include "imageviewerplugin.h"
|
||||||
|
#include "imageviewer.h"
|
||||||
#include "imageviewerfactory.h"
|
#include "imageviewerfactory.h"
|
||||||
#include "imageviewerconstants.h"
|
#include "imageviewerconstants.h"
|
||||||
|
|
||||||
|
#include <QAction>
|
||||||
|
#include <QCoreApplication>
|
||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
|
|
||||||
#include <coreplugin/icore.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 <coreplugin/id.h>
|
||||||
#include <extensionsystem/pluginmanager.h>
|
#include <extensionsystem/pluginmanager.h>
|
||||||
#include <utils/mimetypes/mimedatabase.h>
|
#include <utils/mimetypes/mimedatabase.h>
|
||||||
@@ -52,9 +58,71 @@ bool ImageViewerPlugin::initialize(const QStringList &arguments, QString *errorM
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline ImageViewer *currentImageViewer()
|
||||||
|
{
|
||||||
|
return qobject_cast<ImageViewer *>(Core::EditorManager::currentEditor());
|
||||||
|
}
|
||||||
|
|
||||||
void ImageViewerPlugin::extensionsInitialized()
|
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
|
} // namespace Internal
|
||||||
|
|||||||
@@ -32,6 +32,13 @@
|
|||||||
#include <QPointer>
|
#include <QPointer>
|
||||||
#include <QtPlugin>
|
#include <QtPlugin>
|
||||||
|
|
||||||
|
QT_BEGIN_NAMESPACE
|
||||||
|
class QAction;
|
||||||
|
class QKeySequence;
|
||||||
|
QT_END_NAMESPACE
|
||||||
|
|
||||||
|
namespace Core { class Id; }
|
||||||
|
|
||||||
namespace ImageViewer {
|
namespace ImageViewer {
|
||||||
namespace Internal {
|
namespace Internal {
|
||||||
|
|
||||||
@@ -49,6 +56,8 @@ public:
|
|||||||
void extensionsInitialized();
|
void extensionsInitialized();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
QAction *registerNewAction(Core::Id id, const QString &title, const QKeySequence &key);
|
||||||
|
|
||||||
QPointer<ImageViewerFactory> m_factory;
|
QPointer<ImageViewerFactory> m_factory;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user