diff options
| author | Arisotura <thetotalworm@gmail.com> | 2020-05-30 03:19:20 +0200 | 
|---|---|---|
| committer | Arisotura <thetotalworm@gmail.com> | 2020-05-30 03:19:20 +0200 | 
| commit | b62d90cbe4c5232f0fe8604bd5e11f8eccd48ba1 (patch) | |
| tree | bfd0a5e6f30fc382170ec9402adea32f12ebc342 /src/frontend/qt_sdl/InputConfigDialog.h | |
| parent | 82302c9bf48598f889d0942340c224852c1378c5 (diff) | |
| parent | 993048dd241b59747a7b30edfc861eedd4c005c9 (diff) | |
Merge remote-tracking branch 'remotes/origin/master' into melonDSi
Diffstat (limited to 'src/frontend/qt_sdl/InputConfigDialog.h')
| -rw-r--r-- | src/frontend/qt_sdl/InputConfigDialog.h | 123 | 
1 files changed, 123 insertions, 0 deletions
| diff --git a/src/frontend/qt_sdl/InputConfigDialog.h b/src/frontend/qt_sdl/InputConfigDialog.h new file mode 100644 index 0000000..de57414 --- /dev/null +++ b/src/frontend/qt_sdl/InputConfigDialog.h @@ -0,0 +1,123 @@ +/* +    Copyright 2016-2020 Arisotura + +    This file is part of melonDS. + +    melonDS is free software: you can redistribute it and/or modify it under +    the terms of the GNU General Public License as published by the Free +    Software Foundation, either version 3 of the License, or (at your option) +    any later version. + +    melonDS is distributed in the hope that it will be useful, but WITHOUT ANY +    WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +    FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. + +    You should have received a copy of the GNU General Public License along +    with melonDS. If not, see http://www.gnu.org/licenses/. +*/ + +#ifndef INPUTCONFIGDIALOG_H +#define INPUTCONFIGDIALOG_H + +#include <QDialog> +#include <QPushButton> + +namespace Ui { class InputConfigDialog; } +class InputConfigDialog; + +class InputConfigDialog : public QDialog +{ +    Q_OBJECT + +public: +    explicit InputConfigDialog(QWidget* parent); +    ~InputConfigDialog(); + +    static InputConfigDialog* currentDlg; +    static InputConfigDialog* openDlg(QWidget* parent) +    { +        if (currentDlg) +        { +            currentDlg->activateWindow(); +            return currentDlg; +        } + +        currentDlg = new InputConfigDialog(parent); +        currentDlg->open(); +        return currentDlg; +    } +    static void closeDlg() +    { +        currentDlg = nullptr; +    } + +private slots: +    void on_InputConfigDialog_accepted(); +    void on_InputConfigDialog_rejected(); + +    void on_cbxJoystick_currentIndexChanged(int id); + +private: +    void populatePage(QWidget* page, int num, const char** labels, int* keymap, int* joymap); + +    Ui::InputConfigDialog* ui; + +    int keypadKeyMap[12],   keypadJoyMap[12]; +    int addonsKeyMap[2],    addonsJoyMap[2]; +    int hkGeneralKeyMap[6], hkGeneralJoyMap[6]; +}; + + +class KeyMapButton : public QPushButton +{ +    Q_OBJECT + +public: +    explicit KeyMapButton(int* mapping, bool hotkey); +    ~KeyMapButton(); + +protected: +    void keyPressEvent(QKeyEvent* event) override; +    void focusOutEvent(QFocusEvent* event) override; + +    bool focusNextPrevChild(bool next) override { return false; } + +private slots: +    void onClick(); + +private: +    QString mappingText(); + +    int* mapping; +    bool isHotkey; +}; + +class JoyMapButton : public QPushButton +{ +    Q_OBJECT + +public: +    explicit JoyMapButton(int* mapping, bool hotkey); +    ~JoyMapButton(); + +protected: +    void keyPressEvent(QKeyEvent* event) override; +    void focusOutEvent(QFocusEvent* event) override; +    void timerEvent(QTimerEvent* event) override; + +    bool focusNextPrevChild(bool next) override { return false; } + +private slots: +    void onClick(); + +private: +    QString mappingText(); + +    int* mapping; +    bool isHotkey; + +    int timerID; +    int axesRest[16]; +}; + +#endif // INPUTCONFIGDIALOG_H |