PrismLauncher/launcher/KonamiCode.cpp

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

29 lines
827 B
C++
Raw Permalink Normal View History

#include "KonamiCode.h"
#include <QDebug>
#include <array>
namespace {
const std::array<Qt::Key, 10> konamiCode = { { Qt::Key_Up, Qt::Key_Up, Qt::Key_Down, Qt::Key_Down, Qt::Key_Left, Qt::Key_Right,
Qt::Key_Left, Qt::Key_Right, Qt::Key_B, Qt::Key_A } };
}
KonamiCode::KonamiCode(QObject* parent) : QObject(parent) {}
void KonamiCode::input(QEvent* event)
{
if (event->type() == QEvent::KeyPress) {
QKeyEvent* keyEvent = static_cast<QKeyEvent*>(event);
auto key = Qt::Key(keyEvent->key());
if (key == konamiCode[m_progress]) {
m_progress++;
} else {
m_progress = 0;
}
if (m_progress == static_cast<int>(konamiCode.size())) {
m_progress = 0;
emit triggered();
}
}
}