Commit 7d089b35 authored by Konstantin Tokarev's avatar Konstantin Tokarev Committed by Daniel Teske

Show shortcuts in tooltips of ImageViewer

Change-Id: I90fa2e3bddc99cff721c30499046a11a3dd93486
Reviewed-by: default avatarDaniel Teske <daniel.teske@nokia.com>
parent 108f7d80
/****************************************************************************
**
** Copyright (c) 2012 Konstantin Tokarev.
**
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of Qt Creator.
**
** $QT_BEGIN_LICENSE:BSD$
** You may use this file under the terms of the BSD license as follows:
**
** "Redistribution and use in source and binary forms, with or without
** modification, are permitted provided that the following conditions are
** met:
** * Redistributions of source code must retain the above copyright
** notice, this list of conditions and the following disclaimer.
** * Redistributions in binary form must reproduce the above copyright
** notice, this list of conditions and the following disclaimer in
** the documentation and/or other materials provided with the
** distribution.
** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
** the names of its contributors may be used to endorse or promote
** products derived from this software without specific prior written
** permission.
**
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
** $QT_END_LICENSE$
**
****************************************************************************/
#include "commandbutton.h"
#include <coreplugin/actionmanager/actionmanager.h>
#include <coreplugin/actionmanager/command.h>
#include <utils/proxyaction.h>
using namespace ImageViewer;
using namespace Internal;
CommandButton::CommandButton(QWidget *parent)
: QToolButton(parent)
, m_command(0)
{
}
void CommandButton::setCommandId(Core::Id id)
{
if (m_command)
disconnect(m_command, SIGNAL(keySequenceChanged()), this, SLOT(updateToolTip()));
m_command = Core::ActionManager::command(id);
updateToolTip();
connect(m_command, SIGNAL(keySequenceChanged()), this, SLOT(updateToolTip()));
}
QString CommandButton::toolTipBase() const
{
return m_toolTipBase;
}
void CommandButton::setToolTipBase(const QString &toolTipBase)
{
m_toolTipBase = toolTipBase;
updateToolTip();
}
void CommandButton::updateToolTip()
{
if (m_command)
setToolTip(Utils::ProxyAction::stringWithAppendedShortcut(m_toolTipBase,
m_command->keySequence()));
}
/****************************************************************************
**
** Copyright (c) 2012 Konstantin Tokarev.
**
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of Qt Creator.
**
** $QT_BEGIN_LICENSE:BSD$
** You may use this file under the terms of the BSD license as follows:
**
** "Redistribution and use in source and binary forms, with or without
** modification, are permitted provided that the following conditions are
** met:
** * Redistributions of source code must retain the above copyright
** notice, this list of conditions and the following disclaimer.
** * Redistributions in binary form must reproduce the above copyright
** notice, this list of conditions and the following disclaimer in
** the documentation and/or other materials provided with the
** distribution.
** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
** the names of its contributors may be used to endorse or promote
** products derived from this software without specific prior written
** permission.
**
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
** $QT_END_LICENSE$
**
****************************************************************************/
#ifndef COMMANDBUTTON_H
#define COMMANDBUTTON_H
#include <QPointer>
#include <QString>
#include <QToolButton>
namespace Core {
class Command;
class Id;
}
namespace ImageViewer {
namespace Internal {
class CommandButton : public QToolButton
{
Q_OBJECT
Q_PROPERTY(QString toolTipBase READ toolTipBase WRITE setToolTipBase)
public:
explicit CommandButton(QWidget *parent = 0);
void setCommandId(Core::Id id);
QString toolTipBase() const;
void setToolTipBase(const QString &toolTipBase);
private slots:
void updateToolTip();
private:
QPointer<Core::Command> m_command;
QString m_toolTipBase;
};
}
}
#endif // COMMANDBUTTON_H
......@@ -86,6 +86,14 @@ ImageViewer::ImageViewer(QWidget *parent)
// (photograph has outline - piece of paper)
updateButtonIconByTheme(d->ui_toolbar.toolButtonOutline, "emblem-photos");
d->ui_toolbar.toolButtonZoomIn->setCommandId(Constants::ACTION_ZOOM_IN);
d->ui_toolbar.toolButtonZoomOut->setCommandId(Constants::ACTION_ZOOM_OUT);
d->ui_toolbar.toolButtonOriginalSize->setCommandId(Constants::ACTION_ORIGINAL_SIZE);
d->ui_toolbar.toolButtonFitToScreen->setCommandId(Constants::ACTION_FIT_TO_SCREEN);
d->ui_toolbar.toolButtonBackground->setCommandId(Constants::ACTION_BACKGROUND);
d->ui_toolbar.toolButtonOutline->setCommandId(Constants::ACTION_OUTLINE);
d->ui_toolbar.toolButtonPlayPause->setCommandId(Constants::ACTION_TOGGLE_ANIMATION);
// connections
connect(d->file, SIGNAL(changed()), this, SIGNAL(changed()));
......@@ -272,10 +280,10 @@ void ImageViewer::setPaused(bool paused)
{
d->imageView->setPaused(paused);
if (paused) {
d->ui_toolbar.toolButtonPlayPause->setToolTip(tr("Play Animation"));
d->ui_toolbar.toolButtonPlayPause->setToolTipBase(tr("Play Animation"));
d->ui_toolbar.toolButtonPlayPause->setIcon(QPixmap(QLatin1String(":/imageviewer/images/play-small.png")));
} else {
d->ui_toolbar.toolButtonPlayPause->setToolTip(tr("Pause Animation"));
d->ui_toolbar.toolButtonPlayPause->setToolTipBase(tr("Pause Animation"));
d->ui_toolbar.toolButtonPlayPause->setIcon(QPixmap(QLatin1String(":/imageviewer/images/pause-small.png")));
}
}
......
......@@ -4,6 +4,7 @@ include(../../qtcreatorplugin.pri)
include(imageviewer_dependencies.pri)
HEADERS += \
commandbutton.h \
imageviewerplugin.h \
imageviewerfactory.h \
imageviewerfile.h \
......@@ -13,6 +14,7 @@ HEADERS += \
imagevieweractionhandler.h
SOURCES += \
commandbutton.cpp \
imageviewerplugin.cpp \
imageviewerfactory.cpp \
imageviewerfile.cpp \
......
......@@ -16,6 +16,7 @@ QtcPlugin {
]
files: [
"commandbutton.h",
"imageviewerplugin.h",
"imageviewerfactory.h",
"imageviewerfile.h",
......@@ -23,6 +24,7 @@ QtcPlugin {
"imageview.h",
"imageviewerconstants.h",
"imagevieweractionhandler.h",
"commandbutton.cpp",
"imageviewerplugin.cpp",
"imageviewerfactory.cpp",
"imageviewerfile.cpp",
......
......@@ -18,8 +18,8 @@
<number>0</number>
</property>
<item>
<widget class="QToolButton" name="toolButtonBackground">
<property name="toolTip">
<widget class="CommandButton" name="toolButtonBackground">
<property name="toolTipBase">
<string>Show Background</string>
</property>
<property name="icon">
......@@ -35,8 +35,8 @@
</widget>
</item>
<item>
<widget class="QToolButton" name="toolButtonOutline">
<property name="toolTip">
<widget class="CommandButton" name="toolButtonOutline">
<property name="toolTipBase">
<string>Show Outline</string>
</property>
<property name="icon">
......@@ -52,8 +52,8 @@
</widget>
</item>
<item>
<widget class="QToolButton" name="toolButtonFitToScreen">
<property name="toolTip">
<widget class="CommandButton" name="toolButtonFitToScreen">
<property name="toolTipBase">
<string>Fit to Screen</string>
</property>
<property name="icon">
......@@ -66,8 +66,8 @@
</widget>
</item>
<item>
<widget class="QToolButton" name="toolButtonOriginalSize">
<property name="toolTip">
<widget class="CommandButton" name="toolButtonOriginalSize">
<property name="toolTipBase">
<string>Original Size</string>
</property>
<property name="icon">
......@@ -77,8 +77,8 @@
</widget>
</item>
<item>
<widget class="QToolButton" name="toolButtonZoomIn">
<property name="toolTip">
<widget class="CommandButton" name="toolButtonZoomIn">
<property name="toolTipBase">
<string>Zoom In</string>
</property>
<property name="icon">
......@@ -91,8 +91,8 @@
</widget>
</item>
<item>
<widget class="QToolButton" name="toolButtonZoomOut">
<property name="toolTip">
<widget class="CommandButton" name="toolButtonZoomOut">
<property name="toolTipBase">
<string>Zoom Out</string>
</property>
<property name="icon">
......@@ -105,10 +105,7 @@
</widget>
</item>
<item>
<widget class="QToolButton" name="toolButtonPlayPause">
<property name="toolTip">
<string>Pause Animation</string>
</property>
<widget class="CommandButton" name="toolButtonPlayPause">
</widget>
</item>
<item>
......@@ -148,6 +145,11 @@
<header>utils/styledbar.h</header>
<container>1</container>
</customwidget>
<customwidget>
<class>CommandButton</class>
<extends>QToolButton</extends>
<header>commandbutton.h</header>
</customwidget>
</customwidgets>
<resources>
<include location="imageviewer.qrc"/>
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment