aboutsummaryrefslogtreecommitdiff
path: root/launcher/KonamiCode.cpp
blob: f9ec3b89dfa7e7d9928db865f00b6011db2bb773 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#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();
        }
    }
}