all repos — mgba @ 5fef1b72e4963b3ad04da790aa6c1f225706c63f

mGBA Game Boy Advance Emulator

src/platform/qt/InputItem.h (view raw)

 1/* Copyright (c) 2013-2017 Jeffrey Pfau
 2 *
 3 * This Source Code Form is subject to the terms of the Mozilla Public
 4 * License, v. 2.0. If a copy of the MPL was not distributed with this
 5 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 6#ifndef QGBA_INPUT_ITEM
 7#define QGBA_INPUT_ITEM
 8
 9#include "GamepadAxisEvent.h"
10
11#include <QAction>
12
13namespace QGBA {
14
15class InputItem {
16public:
17	typedef QPair<std::function<void ()>, std::function<void ()>> Functions;
18
19	InputItem(QAction* action, const QString& name, InputItem* parent = nullptr);
20	InputItem(Functions functions, int shortcut, const QString& visibleName,
21	          const QString& name, InputItem* parent = nullptr);
22	InputItem(QMenu* action, InputItem* parent = nullptr);
23
24	QAction* action() { return m_action; }
25	const QAction* action() const { return m_action; }
26	const int shortcut() const { return m_shortcut; }
27	Functions functions() const { return m_functions; }
28	QMenu* menu() { return m_menu; }
29	const QMenu* menu() const { return m_menu; }
30	const QString& visibleName() const { return m_visibleName; }
31	const QString& name() const { return m_name; }
32	QList<InputItem>& items() { return m_items; }
33	const QList<InputItem>& items() const { return m_items; }
34	InputItem* parent() { return m_parent; }
35	const InputItem* parent() const { return m_parent; }
36	void addAction(QAction* action, const QString& name);
37	void addFunctions(Functions functions, int shortcut, const QString& visibleName,
38	                  const QString& name);
39	void addSubmenu(QMenu* menu);
40	int button() const { return m_button; }
41	void setShortcut(int sequence);
42	void setButton(int button) { m_button = button; }
43	int axis() const { return m_axis; }
44	GamepadAxisEvent::Direction direction() const { return m_direction; }
45	void setAxis(int axis, GamepadAxisEvent::Direction direction);
46
47	bool operator==(const InputItem& other) const {
48		return m_menu == other.m_menu && m_action == other.m_action;
49	}
50
51private:
52	QAction* m_action;
53	int m_shortcut;
54	QMenu* m_menu;
55	Functions m_functions;
56	QString m_name;
57	QString m_visibleName;
58	int m_button;
59	int m_axis;
60	GamepadAxisEvent::Direction m_direction;
61	QList<InputItem> m_items;
62	InputItem* m_parent;
63};
64
65}
66
67#endif