9#include <QtGui/qevent.h>
10#if QT_CONFIG(shortcut)
11# include <QtGui/private/qshortcutmap_p.h>
13#include <QtGui/private/qguiapplication_p.h>
14#include <QtQuick/private/qquickitem_p.h>
16#include <QtCore/qpointer.h>
87#if QT_CONFIG(shortcut)
95QQuickActionPrivate::ShortcutEntry::ShortcutEntry(
QObject *
target)
100QQuickActionPrivate::ShortcutEntry::~ShortcutEntry()
105QObject *QQuickActionPrivate::ShortcutEntry::target()
const
110int QQuickActionPrivate::ShortcutEntry::shortcutId()
const
117 if (
shortcut.isEmpty() || m_shortcutId)
127void QQuickActionPrivate::ShortcutEntry::ungrab()
136void QQuickActionPrivate::ShortcutEntry::setEnabled(
bool enabled)
144QVariant QQuickActionPrivate::shortcut()
const
149void QQuickActionPrivate::setShortcut(
const QVariant &
var)
152 if (vshortcut ==
var)
155 defaultShortcutEntry->ungrab();
156 for (QQuickActionPrivate::ShortcutEntry *
entry :
std::as_const(shortcutEntries))
160 keySequence = variantToKeySequence(
var);
162 defaultShortcutEntry->grab(keySequence,
enabled);
163 for (QQuickActionPrivate::ShortcutEntry *
entry :
std::as_const(shortcutEntries))
166 emit q->shortcutChanged(keySequence);
178#if QT_CONFIG(shortcut)
179 defaultShortcutEntry->setEnabled(
enable);
180 for (QQuickActionPrivate::ShortcutEntry *
entry : std::as_const(shortcutEntries))
193 item->installEventFilter(
q);
204 item->removeEventFilter(
q);
214#if QT_CONFIG(shortcut)
215 QQuickActionPrivate::ShortcutEntry *
entry =
new QQuickActionPrivate::ShortcutEntry(
item);
218 shortcutEntries +=
entry;
220 updateDefaultShortcutEntry();
226#if QT_CONFIG(shortcut)
227 QQuickActionPrivate::ShortcutEntry *
entry = findShortcutEntry(
item);
231 shortcutEntries.removeOne(
entry);
234 updateDefaultShortcutEntry();
242#if QT_CONFIG(shortcut)
243 QQuickActionPrivate::ShortcutEntry *
entry = findShortcutEntry(
item);
252 updateDefaultShortcutEntry();
263#if QT_CONFIG(shortcut)
267 if (
event->key() != keySequence)
270 QQuickActionPrivate::ShortcutEntry *
entry = findShortcutEntry(
object);
274 q->trigger(
entry->target());
278QQuickActionPrivate::ShortcutEntry *QQuickActionPrivate::findShortcutEntry(
QObject *
target)
const
282 return defaultShortcutEntry;
283 for (QQuickActionPrivate::ShortcutEntry *
entry : shortcutEntries) {
290void QQuickActionPrivate::updateDefaultShortcutEntry()
292 bool hasActiveShortcutEntries =
false;
293 for (QQuickActionPrivate::ShortcutEntry *
entry :
std::as_const(shortcutEntries)) {
294 if (
entry->shortcutId()) {
295 hasActiveShortcutEntries =
true;
300 if (hasActiveShortcutEntries)
301 defaultShortcutEntry->ungrab();
302 else if (!defaultShortcutEntry->shortcutId())
303 defaultShortcutEntry->grab(keySequence,
enabled);
310#if QT_CONFIG(shortcut)
312 d->defaultShortcutEntry =
new QQuickActionPrivate::ShortcutEntry(
this);
320 d->group->removeAction(
this);
322#if QT_CONFIG(shortcut)
323 for (QQuickActionPrivate::ShortcutEntry *
entry : std::as_const(
d->shortcutEntries))
324 d->unwatchItem(qobject_cast<QQuickItem *>(
entry->target()));
327 delete d->defaultShortcutEntry;
387 return d->enabled && (!
d->group ||
d->group->isEnabled());
393 d->explicitEnabled =
true;
400 if (!
d->explicitEnabled)
403 d->explicitEnabled =
false;
455#if QT_CONFIG(shortcut)
474 return d->keySequence;
518 QPointer<QObject> guard =
q;
533#if QT_CONFIG(shortcut)
543#if QT_CONFIG(shortcut)
556#include "moc_qquickaction_p.cpp"
bool isVisible() const
Returns true if the item is visible; otherwise, false is returned.
static QGuiApplicationPrivate * instance()
The QKeySequence class encapsulates a key sequence as used by shortcuts.
static QKeySequence fromString(const QString &str, SequenceFormat format=PortableText)
virtual bool event(QEvent *event)
This virtual function receives events to an object and should return true if the event e was recogniz...
void trigger(QObject *, bool doToggle)
bool handleShortcutEvent(QObject *object, QShortcutEvent *event)
void itemDestroyed(QQuickItem *item) override
void registerItem(QQuickItem *item)
bool watchItem(QQuickItem *item)
void setEnabled(bool enable)
Abstract user interface action.
void itemVisibilityChanged(QQuickItem *item) override
bool unwatchItem(QQuickItem *item)
void unregisterItem(QQuickItem *item)
void toggled(QObject *source=nullptr)
bool eventFilter(QObject *object, QEvent *event) override
Filters events if this object has been installed as an event filter for the watched object.
void setEnabled(bool enabled)
bool isCheckable() const
\qmlproperty bool QtQuick.Controls::Action::checkable
void setIcon(const QQuickIcon &icon)
QQuickAction(QObject *parent=nullptr)
void toggle(QObject *source=nullptr)
\qmlmethod void QtQuick.Controls::Action::toggle(QtObject source)
void checkedChanged(bool checked)
void checkableChanged(bool checkable)
void trigger(QObject *source=nullptr)
\qmlmethod void QtQuick.Controls::Action::trigger(QtObject source)
void setCheckable(bool checkable)
void setChecked(bool checked)
bool event(QEvent *event) override
This virtual function receives events to an object and should return true if the event e was recogniz...
void setText(const QString &text)
void textChanged(const QString &text)
void iconChanged(const QQuickIcon &icon)
bool isEnabled() const
\qmlproperty bool QtQuick.Controls::Action::enabled
bool isChecked() const
\qmlproperty bool QtQuick.Controls::Action::checked
void ensureRelativeSourceResolved(const QObject *owner)
static QQuickItemPrivate * get(QQuickItem *item)
The QQuickItem class provides the most basic of all visual items in \l {Qt Quick}.
The QShortcutEvent class provides an event which is generated when the user presses a key combination...
\macro QT_RESTRICTED_CAST_FROM_ASCII
int toInt(bool *ok=nullptr) const
Returns the variant as an int if the variant has userType() \l QMetaType::Int, \l QMetaType::Bool,...
QString toString() const
Returns the variant as a QString if the variant has a userType() including, but not limited to:
QMetaType metaType() const
qDeleteAll(list.begin(), list.end())
Combined button and popup list for selecting options.
GLenum GLenum GLsizei const GLuint GLboolean enabled
GLsizei GLsizei GLchar * source
GLdouble GLdouble GLdouble GLdouble q
static bool matcher(QObject *object, Qt::ShortcutContext context)