qskinny/src/controls/QskShortcutMap.h

129 lines
4.2 KiB
C
Raw Normal View History

/******************************************************************************
* QSkinny - Copyright (C) 2016 Uwe Rathmann
* This file may be used under the terms of the QSkinny License, Version 1.0
*****************************************************************************/
#ifndef QSK_SHORTCUT_MAP_H
#define QSK_SHORTCUT_MAP_H
#include "QskGlobal.h"
2018-03-12 09:27:54 +01:00
#include "QskMetaFunction.h"
#include <QQuickWindow>
class QQuickItem;
class QKeySequence;
class QSK_EXPORT QskShortcutMap
{
public:
static void setAutoRepeat( int, bool on );
static void setEnabled( int, bool on );
static void removeShortcut( int );
2018-03-12 09:27:54 +01:00
// string based slots
static int addShortcut( const QKeySequence&,
bool autoRepeat, const QObject* receiver, const char* method );
2018-03-12 09:27:54 +01:00
static int addShortcut( QQuickWindow*, const QKeySequence&,
bool autoRepeat, const QObject* receiver, const char* method );
2018-03-12 09:27:54 +01:00
static int addShortcut( QQuickItem*, const QKeySequence&,
bool autoRepeat, const QObject* receiver, const char* method );
2018-03-12 09:27:54 +01:00
// functor based slots
static int addShortcut( const QKeySequence&,
bool autoRepeat, const QskMetaFunction& );
2018-03-12 09:27:54 +01:00
static int addShortcut( const QKeySequence&,
bool autoRepeat, const QObject* context, const QskMetaFunction& );
2018-03-12 09:27:54 +01:00
static int addShortcut( QQuickItem*, const QKeySequence&,
bool autoRepeat, const QskMetaFunction& );
2018-03-12 09:27:54 +01:00
static int addShortcut( QQuickItem*, const QKeySequence&,
bool autoRepeat, const QObject* context, const QskMetaFunction& );
2018-03-12 09:27:54 +01:00
static int addShortcut( QQuickWindow*, const QKeySequence&,
bool autoRepeat, const QskMetaFunction& );
2018-03-12 09:27:54 +01:00
static int addShortcut( QQuickWindow*, const QKeySequence&,
bool autoRepeat, const QObject* context, const QskMetaFunction& );
static bool contextMatcher( const QQuickItem*, Qt::ShortcutContext );
private:
QskShortcutMap() = delete;
~QskShortcutMap() = delete;
2018-03-12 09:27:54 +01:00
static int addFunction(
QQuickItem* item, const QKeySequence&, bool autoRepeat,
const QObject* receiver, const QskMetaFunction& );
2018-03-12 09:27:54 +01:00
static int addMethod(
QQuickItem* item, const QKeySequence&, bool autoRepeat,
2018-03-12 09:27:54 +01:00
const QObject* receiver, const char* );
};
inline int QskShortcutMap::addShortcut(
const QKeySequence& sequence, bool autoRepeat,
const QObject* receiver, const char* method )
{
return addMethod( nullptr, sequence, autoRepeat, receiver, method );
}
inline int QskShortcutMap::addShortcut(
2018-03-12 09:27:54 +01:00
QQuickWindow* window, const QKeySequence& sequence,
bool autoRepeat, const QObject* receiver, const char* method )
{
auto item = window ? window->contentItem() : nullptr;
return addMethod( item, sequence, autoRepeat, receiver, method );
}
inline int QskShortcutMap::addShortcut(
2018-03-12 09:27:54 +01:00
const QKeySequence& sequence, bool autoRepeat,
const QskMetaFunction& function )
{
2018-03-12 09:27:54 +01:00
return addFunction( nullptr, sequence, autoRepeat, nullptr, function );
}
inline int QskShortcutMap::addShortcut(
2018-03-12 09:27:54 +01:00
const QKeySequence& sequence, bool autoRepeat,
const QObject* context, const QskMetaFunction& function )
{
2018-03-12 09:27:54 +01:00
return addFunction( nullptr, sequence, autoRepeat, context, function );
}
inline int QskShortcutMap::addShortcut(
2018-03-12 09:27:54 +01:00
QQuickItem* item, const QKeySequence& sequence, bool autoRepeat,
const QskMetaFunction& function )
{
2018-03-12 09:27:54 +01:00
return addFunction( item, sequence, autoRepeat, nullptr, function );
}
inline int QskShortcutMap::addShortcut(
QQuickItem* item, const QKeySequence& sequence, bool autoRepeat,
2018-03-12 09:27:54 +01:00
const QObject* context, const QskMetaFunction& function )
{
2018-03-12 09:27:54 +01:00
return addFunction( item, sequence, autoRepeat, context, function );
}
inline int QskShortcutMap::addShortcut(
QQuickWindow* window, const QKeySequence& sequence, bool autoRepeat,
2018-03-12 09:27:54 +01:00
const QskMetaFunction& function )
{
auto item = window ? window->contentItem() : nullptr;
2018-03-12 09:27:54 +01:00
return addFunction( item, sequence, autoRepeat, nullptr, function );
}
inline int QskShortcutMap::addShortcut(
2018-03-12 09:27:54 +01:00
QQuickWindow* window, const QKeySequence& sequence, bool autoRepeat,
const QObject* context, const QskMetaFunction& function )
{
auto item = window ? window->contentItem() : nullptr;
2018-03-12 09:27:54 +01:00
return addFunction( item, sequence, autoRepeat, context, function );
}
#endif