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>
85#if QT_CONFIG(shortcut)
93QQuickActionPrivate::ShortcutEntry::ShortcutEntry(
QObject *
target)
98QQuickActionPrivate::ShortcutEntry::~ShortcutEntry()
103QObject *QQuickActionPrivate::ShortcutEntry::target()
const
108int QQuickActionPrivate::ShortcutEntry::shortcutId()
const
115 if (
shortcut.isEmpty() || m_shortcutId)
125void QQuickActionPrivate::ShortcutEntry::ungrab()
134void QQuickActionPrivate::ShortcutEntry::setEnabled(
bool enabled)
142QVariant QQuickActionPrivate::shortcut()
const
147void QQuickActionPrivate::setShortcut(
const QVariant &
var)
150 if (vshortcut ==
var)
153 defaultShortcutEntry->ungrab();
154 for (QQuickActionPrivate::ShortcutEntry *
entry :
std::as_const(shortcutEntries))
158 keySequence = variantToKeySequence(
var);
160 defaultShortcutEntry->grab(keySequence,
enabled);
161 for (QQuickActionPrivate::ShortcutEntry *
entry :
std::as_const(shortcutEntries))
164 emit q->shortcutChanged(keySequence);
176#if QT_CONFIG(shortcut)
177 defaultShortcutEntry->setEnabled(
enable);
178 for (QQuickActionPrivate::ShortcutEntry *
entry : std::as_const(shortcutEntries))
191 item->installEventFilter(
q);
202 item->removeEventFilter(
q);
212#if QT_CONFIG(shortcut)
213 QQuickActionPrivate::ShortcutEntry *
entry =
new QQuickActionPrivate::ShortcutEntry(
item);
216 shortcutEntries +=
entry;
218 updateDefaultShortcutEntry();
224#if QT_CONFIG(shortcut)
225 QQuickActionPrivate::ShortcutEntry *
entry = findShortcutEntry(
item);
229 shortcutEntries.removeOne(
entry);
232 updateDefaultShortcutEntry();
240#if QT_CONFIG(shortcut)
241 QQuickActionPrivate::ShortcutEntry *
entry = findShortcutEntry(
item);
250 updateDefaultShortcutEntry();
261#if QT_CONFIG(shortcut)
265 if (
event->key() != keySequence)
268 QQuickActionPrivate::ShortcutEntry *
entry = findShortcutEntry(
object);
272 q->trigger(
entry->target());
276QQuickActionPrivate::ShortcutEntry *QQuickActionPrivate::findShortcutEntry(
QObject *
target)
const
280 return defaultShortcutEntry;
281 for (QQuickActionPrivate::ShortcutEntry *
entry : shortcutEntries) {
288void QQuickActionPrivate::updateDefaultShortcutEntry()
290 bool hasActiveShortcutEntries =
false;
291 for (QQuickActionPrivate::ShortcutEntry *
entry :
std::as_const(shortcutEntries)) {
292 if (
entry->shortcutId()) {
293 hasActiveShortcutEntries =
true;
298 if (hasActiveShortcutEntries)
299 defaultShortcutEntry->ungrab();
300 else if (!defaultShortcutEntry->shortcutId())
301 defaultShortcutEntry->grab(keySequence,
enabled);
308#if QT_CONFIG(shortcut)
310 d->defaultShortcutEntry =
new QQuickActionPrivate::ShortcutEntry(
this);
318 d->group->removeAction(
this);
320#if QT_CONFIG(shortcut)
321 for (QQuickActionPrivate::ShortcutEntry *
entry : std::as_const(
d->shortcutEntries))
325 delete d->defaultShortcutEntry;
373 d->icon.ensureRelativeSourceResolved(
this);
385 return d->enabled && (!
d->group ||
d->group->isEnabled());
391 d->explicitEnabled =
true;
398 if (!
d->explicitEnabled)
401 d->explicitEnabled =
false;
453#if QT_CONFIG(shortcut)
472 return d->keySequence;
531#if QT_CONFIG(shortcut)
541#if QT_CONFIG(shortcut)
554#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...
bool isNull() const
Returns true if the referenced object has been destroyed or if there is no referenced object; otherwi...
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 removeItemChangeListener(QQuickItemChangeListener *, ChangeTypes types)
void addItemChangeListener(QQuickItemChangeListener *listener, ChangeTypes types)
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
QQuickItem * qobject_cast< QQuickItem * >(QObject *o)
static bool matcher(QObject *object, Qt::ShortcutContext context)
IUIAutomationTreeWalker __RPC__deref_out_opt IUIAutomationElement ** parent