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 |