1/*
2 * Copyright (C) 2020-2022 Roy Qu (royqh1979@gmail.com)
3 *
4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation, either version 3 of the License, or
7 * (at your option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with this program. If not, see <https://www.gnu.org/licenses/>.
16 */
17#ifndef SHORTCUTMANAGER_H
18#define SHORTCUTMANAGER_H
19
20#include <QMap>
21#include <QObject>
22#include <memory>
23
24class QAction;
25class QToolButton;
26
27struct EnvironmentShortcut {
28 QString name;
29 QString fullPath;
30 QString shortcut;
31 QAction* action;
32 QToolButton* button;
33 bool isAction;
34};
35
36using PEnvironmentShortcut = std::shared_ptr<EnvironmentShortcut>;
37
38class ShortcutManager : public QObject
39{
40 Q_OBJECT
41public:
42 explicit ShortcutManager(QObject *parent = nullptr);
43 void load();
44 void save();
45 void setShortcuts(QList<PEnvironmentShortcut> shortcuts);
46 void applyTo(QList<QAction*> actions);
47 void applyTo(QAction* action);
48
49private:
50 QMap<QString,PEnvironmentShortcut> mShortcuts;
51};
52
53using PShortcutManager = std::shared_ptr<ShortcutManager>;
54
55#endif // SHORTCUTMANAGER_H
56