Shortcut

Since: BlackBerry 10.1.0

#include <bb/cascades/Shortcut>

Represents a shortcut that can be invoked on objects that inherit from Control, AbstractPane, and AbstractActionItem.

The Shortcut events propagate from the control in focus up to the root of the scene. In case no control is currently in focus, all shortcut events are redirected to the root (eg. Page).

If a Shortcut is attached to an ActionItem, the ActionItem::triggered() signal is emitted when the specified Shortcut key is pressed.

You can specify a character to be used to trigger a particular Shortcut:

Shortcut* myShortcut1 = Shortcut::create()
                        .key("a")
                        .onTriggered(this, SLOT(keyShortcutHandlerButton2()));

Button* myButton2 = Button::create()
                    .text("Button 2")
                    .addShortcut(myShortcut1)
                    .focusPolicy(FocusPolicy::KeyAndTouch);
Here's an example of creating a key Shortcut by calling the constructor and connecting to each signal individually:
Shortcut* myShortcut2 = new Shortcut();
myShortcut2->setKey("b");
connect(myShortcut2, SIGNAL(triggered()), this, SLOT(keyShortcutHandlerButton3()));

Button* myButton3 = Button::create();
myButton3->setText("Button 3");
myButton3->addShortcut(myShortcut2);
myButton3->setFocusPolicy(FocusPolicy::KeyAndTouch);
And here's how to create a key shortcut for a Control using QML:
TextArea {
    id: shortcutText
    objectName: "shortcutText"
    text: ""
}

Button {
    text: "Button 1"
    focusPolicy: FocusPolicy.KeyAndTouch

    shortcuts: [
        Shortcut {
            key: "d"
            onTriggered: {
                shortcutText.text = "'d' shortcut triggered" 
            }                  
        },
        Shortcut {
            key: "@"
            onTriggered: {
                shortcutText.text = "'@' shortcut triggered"
            }
        },
        Shortcut {
            key: "Delete"
            onTriggered: {
                shortcutText.text = "Delete shortcut triggered"
            }
        }
    ]
}


Overview

QML properties

key: QString
attachedObjects: QDeclarativeListProperty< QObject > [read-only]Inherited
enabled: boolInherited
objectName: QStringInherited
parent: QObject [read-only]Inherited
triggerMode: bb::cascades::ShortcutTriggerMode::TypeInherited
ui: bb::cascades::UIConfig [read-only]Inherited

Properties Index

Public Functions Index

Shortcut (UIObject *parent=0)
virtual ~Shortcut ()
QStringkey () const
Q_SLOT voidresetKey ()
Q_SLOT voidsetKey (const QString &key)
virtual boolevent (QEvent *event)Inherited
boolisEnabled () const Inherited
Q_SLOT voidresetEnabled ()Inherited
Q_SLOT voidresetTriggerMode ()Inherited
Q_SLOT voidsetEnabled (bool enabled)Inherited
voidsetObjectName (const QString &name)Inherited
Q_SLOT voidsetTriggerMode (bb::cascades::ShortcutTriggerMode::Type triggerMode)Inherited
virtual Q_INVOKABLE QStringtoDebugString () const Inherited
bb::cascades::ShortcutTriggerMode::TypetriggerMode () const Inherited
Q_INVOKABLE bb::cascades::UIConfig *ui () const Inherited

Static Public Functions Index

Buildercreate ()

Protected Functions Index

Only has inherited protected functions

BaseObject (QObject *parent=0)Inherited
virtual voidconnectNotify (const char *signal)Inherited
virtual voiddisconnectNotify (const char *signal)Inherited

Signals Index

voidkeyChanged (const QString &key)
voidcreationCompleted ()Inherited
voidenabledChanged (bool enabled)Inherited
voidobjectNameChanged (const QString &objectName)Inherited
voidtriggered ()Inherited
voidtriggerModeChanged (bb::cascades::ShortcutTriggerMode::Type newTriggerMode)Inherited

Properties

QString key

A string that will trigger this shortcut.

Since:

BlackBerry 10.1.0

QDeclarativeListProperty< QObject > attachedObjectsInherited[read-only]

A hierarchical list of the UIObject's attached objects.

Since:

BlackBerry 10.0.0

bool enabledInherited

Describes whether the current shortcut is enabled or disabled.

Since:

BlackBerry 10.1.0

QString objectNameInherited

This property is overridden from QObject.

See also:

QObject::objectName().

Since:

BlackBerry 10.0.0

QObject parentInherited[read-only]

A read-only property that represents this object's parent.

The parent of an object is specified using QObject::setParent(QObject*). The purpose of the property is to expose the object's parent to QML.

This property is read-only to prevent modifications from QML, where typically the parent is declaratively set. In C++ code, the parent can be explicitly set using QObject::setParent(QObject*), or implicitly set by adding it to a visual container.

The default value of this property is 0.

Since:

BlackBerry 10.0.0

bb::cascades::ShortcutTriggerMode::Type triggerModeInherited

Describes the user input which should trigger the shortcut.

The default value is bb::cascades::ShortcutTriggerMode::Default, letting the system decide the appropriate trigger mode. Set this property if you need to guarantee that the shortcut is triggered by a specific user input. Otherwise, for the best user experience it is recommended to always use the default value. Also, you should not assume anything about the default mode, as it may vary depending on the device or other factors.

Since:

BlackBerry 10.3.0

bb::cascades::UIConfig uiInherited[read-only]

An object that gives access to unit conversion routines.

QML use:
        // Size using design units
        Container {
            preferredWidth: ui.du(12)
            preferredHeight: ui.du(5)
        }

        // Size using design units, snap to whole pixels
        Container {
            preferredWidth: ui.sdu(13.5)
            preferredHeight: ui.sdu(7.5)
        }

        // Size using absolute pixel values
        Container {
            preferredWidth: ui.px(150)
            preferredHeight: ui.px(50)
        }
C++ use:
Container *container1 = Container::create().background(Color::Red);
UIConfig *ui = container1->ui();
container1->setPreferredWidth(ui->du(12));
container1->setPreferredHeight(ui->du(5));

Container *container2 = Container::create().background(Color::Green);
container2->setPreferredWidth(ui->sdu(13.5));
container2->setPreferredHeight(ui->sdu(7.5));

Container *container3 = Container::create().background(Color::Blue);
container3->setPreferredWidth(ui->px(150));
container3->setPreferredHeight(ui->sdu(50));
Since:

Blackberry 10.3.0

Public Functions

Shortcut (

Default constructor.

The resulting Shortcut will have key set to a null QString, meaning the shortcut will not be triggered at all.

Since:

BlackBerry 10.1.0

virtual~Shortcut ()

Destructor.

QString key ()

Gets the key used to trigger this shortcut.

Return:

A key shortcut that can trigger this shortcut. Note that a null QString is returned if the key has not been set.

Since:

BlackBerry 10.1.0

Q_SLOT void resetKey ()

Resets the key on the shortcut to a null QString.

If the key actually changes, the keyChanged() signal is emitted after the value has been reset.

Since:

BlackBerry 10.1.0

Q_SLOT void setKey (

Sets the key or a key combination to be used to trigger this shortcut.

If the key is changed, the keyChanged() signal is emitted after the value has been set.

The accepted syntax for this string is case insensitive and is defined as follows [Shift+][Alt+]<Key>

Where:

  • The key is a single character, symbol or a special key (defined below).

  • Alpha key values are case insensitive. The character maps to the key, not the ASCII value. This means that "Shift+a" is the same shortcut as "Shift+A".

  • Modifiers are optional, but the key must be defined.

  • '+' must separate modifiers.

  • The order of modifiers is not important as long as they precede key.

  • Each modifier may exist exactly once.

Special keys have a unique word used to identify them. The available special keys are:
  • Enter

  • Space

  • Backspace

  • Delete

  • Escape

  • Tab

Examples:
shortcut->setKey("a"); // These two are equivalent
shortcut->setKey("A"); // These two are equivalent
shortcut->setKey("@");
shortcut->setKey("Enter");
shortcut->setKey("Alt+Q");
shortcut->setKey("Shift+Alt+@");
shortcut->setKey("shift+space");
shortcut->setKey("Shift+Alt+Delete");
Parameters
key

The key that triggers this shortcut if it is a key shortcut and it is enabled.

Since:

BlackBerry 10.1.0

virtual bool event (Inherited

Overloaded to implement the event mechanism in Cascades.

Warning!

If this function is overridden, it must be called by the derived class for events to work properly in Cascades.

Parameters
event

The received event.

Return:

True if the received event was recognized and processed, false otherwise.

Since:

BlackBerry 10.0.0

bool isEnabled ()Inherited

Gets the enabled state of the shortcut.

Return:

true if this shortcut is enabled and false otherwise.

Since:

BlackBerry 10.1.0

Q_SLOT void resetEnabled ()Inherited

Resets the enabled state of the shortcut to true.

After the operation is completed and the enabled state is changed, the enabledChanged() signal is emitted.

Since:

BlackBerry 10.1.0

Q_SLOT void resetTriggerMode ()Inherited

Resets the trigger mode to its default value.

The default value is bb::cascades::ShortcutTriggerMode::Default, letting the system decide the appropriate trigger mode.

After the operation is completed and the triggerMode is changed, the triggerModeChanged() signal is emitted.

Since:

BlackBerry 10.3.0

Q_SLOT void setEnabled (
  • boolenabled)
Inherited

Sets the enabled state of the shortcut.

After the operation is completed and the enabled state is changed, the enabledChanged() signal is emitted.

Parameters
enabled

If true the shortcut is enabled, and if false the shortcut is disabled.

Since:

BlackBerry 10.1.0

void setObjectName (Inherited

Sets the objectName property.

Parameters
name

The new name for the object.

Since:

BlackBerry 10.0.0

Q_SLOT void setTriggerMode (Inherited

Sets which user input should trigger the shortcut.

Set this property if you need to guarantee that the shortcut is triggered by a specific user input. Otherwise, for the best user experience it is recommended to always use the default value. Also, you should not assume anything about the default mode, as it may vary depending on the device or other factors.

After the operation is completed and the triggerMode is changed, the triggerModeChanged() signal is emitted.

Parameters
triggerMode

The new trigger mode to set.

Since:

BlackBerry 10.3.0

virtual Q_INVOKABLE QString toDebugString ()Inherited

Returns a debug string representing this object.

Return:

A debug string for the object.

Since:

BlackBerry 10.0.0

bb::cascades::ShortcutTriggerMode::Type triggerMode ()Inherited

Gets the current trigger mode of the shortcut.

Return:

The current trigger mode.

Since:

BlackBerry 10.3.0

Q_INVOKABLE bb::cascades::UIConfig * ui ()Inherited

Returns the UIConfig for this ui object.

The UIConfig can be used to perform unit conversions from design units (du) and snapped design units (sdu) to pixels.

Ownership remains with Cascades.

C++ use:
Container *container1 = Container::create().background(Color::Red);
UIConfig *ui = container1->ui();
container1->setPreferredWidth(ui->du(12));
container1->setPreferredHeight(ui->du(5));

Container *container2 = Container::create().background(Color::Green);
container2->setPreferredWidth(ui->sdu(13.5));
container2->setPreferredHeight(ui->sdu(7.5));

Container *container3 = Container::create().background(Color::Blue);
container3->setPreferredWidth(ui->px(150));
container3->setPreferredHeight(ui->sdu(50));
Return:

The UIConfig for this ui object.

Since:

BlackBerry 10.3.0

Static Public Functions

Builder create ()

Creates and returns a builder for constructing a Shortcut.

Using the builder to create a Shortcut:
 Shortcut* shortcut = Shortcut::create();
Return:

A builder used for constructing a Shortcut.

Since:

BlackBerry 10.1.0

Protected Functions

(Only has inherited protected functions)

BaseObject (Inherited

Constructs an instance of BaseObject's subclass.

Parameters
parent

An optional parent, defaults to 0.

Since:

BlackBerry 10.0.0

virtual void connectNotify (
  • const char *signal)
Inherited

Overloaded to implement the event mechanism in Cascades.

If this function is overridden, it must be called by the derived class for events to work properly in Cascades.

Parameters
signal

The connected signal.

Since:

BlackBerry 10.0.0

virtual void disconnectNotify (
  • const char *signal)
Inherited

Overloaded to implement the event mechanism in Cascades.

If this function is overridden, it must be called by the derived class for events to work properly in Cascades.

Parameters
signal

The disconnected signal.

Since:

BlackBerry 10.0.0

Signals

void keyChanged (

Emitted when the key has changed.

Parameters
key

The new key or key combination to use to trigger this shortcut

Since:

BlackBerry 10.1.0

void creationCompleted ()Inherited

Emitted when this object is instantiated as a result of loading a QML document and creating the root node (only after the root component that caused this instantiation has completed construction), or when the object is being constructed from its builder class.

This signal indicates that the construction and initialization of the object has been completed, the properties are initialized, and any QML binding values have been assigned to the object.

This signal is not emitted when the object is constructed from C++ using the constructor. If the object is constructed using its builder class, the signal is emitted when the the builder class returns the fully constructed object.

This signal can be used when there is an activity that needs to be performed, such as a property state integrity verification after the object is instantiated from a QML document or a builder, but before control is returned to the application.

See also:

QmlDocument

Since:

BlackBerry 10.0.0

void enabledChanged (
  • boolenabled)
Inherited

Emitted when the enabled property on the shortcut changes.

Parameters
enabled

If true the shortcut is enabled, if false the shortcut is disabled.

Since:

BlackBerry 10.1.0

void objectNameChanged (Inherited

This signal is emitted when the objectName property is changed.

Since:

BlackBerry 10.0.0

void triggered ()Inherited

Emitted when the AbstractShortcut is triggered by the user.

Since:

BlackBerry 10.1.0

void triggerModeChanged (Inherited

Emitted when the triggerMode property on the shortcut changes.

Parameters
newTriggerMode

The new trigger mode.

Note:

Due to a work around for a Qt Core issue with accessing enums from QML the argument of this signal doesn't follow naming convention for signals in which the signal arguments are typically named to match the associated property's name. Use the object's property to access current property value instead of the signal argument to avoid runtime errors (i.e. use triggerMode instead of newTriggerMode).

Since:

BlackBerry 10.3.0

Last modified: 2014-09-30



Got questions about leaving a comment? Get answers from our Disqus FAQ.

comments powered by Disqus