1
0
Fork 1
mirror of https://github.com/TES3MP/openmw-tes3mp.git synced 2025-01-15 22:19:54 +00:00
openmw-tes3mp/apps/opencs/model/prefs/shortcuteventhandler.hpp
Aesylwinn e8626e588a Changes in shortcut design.
- Handle input in centralized class for potential conflict resolution.
- Remove wrapper class for QShortcut; it should be unnecessary.
- Added customizable shortcut usage to orbit camera mode.
2016-07-20 08:25:11 -04:00

54 lines
1.2 KiB
C++

#ifndef CSM_PREFS_SHORTCUT_EVENT_HANDLER_H
#define CSM_PREFS_SHORTCUT_EVENT_HANDLER_H
#include <vector>
#include <QObject>
class QEvent;
class QWidget;
namespace CSMPrefs
{
class Shortcut;
/// Users of this class should install it as an event handler
class ShortcutEventHandler : public QObject
{
Q_OBJECT
public:
ShortcutEventHandler(QObject* parent=0);
void addShortcut(Shortcut* shortcut);
void removeShortcut(Shortcut* shortcut);
protected:
bool eventFilter(QObject* watched, QEvent* event);
private:
enum MatchResult
{
Matches_WithMod,
Matches_NoMod,
Matches_Not
};
bool activate(unsigned int mod, unsigned int button);
bool deactivate(unsigned int button);
MatchResult match(unsigned int mod, unsigned int button, unsigned int value);
// Prefers Matches_WithMod and a larger number of buttons
static bool sort(const std::pair<MatchResult, Shortcut*>& left,
const std::pair<MatchResult, Shortcut*>& right);
std::vector<Shortcut*> mShortcuts;
};
}
#endif