File indexing completed on 2024-04-21 16:33:16
0001 /* 0002 SPDX-FileCopyrightText: 2010 Jan Lepper <dehtris@yahoo.de> 0003 SPDX-FileCopyrightText: 2010-2022 Krusader Krew <https://krusader.org> 0004 0005 SPDX-License-Identifier: GPL-2.0-or-later 0006 */ 0007 0008 #ifndef ACTIONSBASE_H 0009 #define ACTIONSBASE_H 0010 0011 // QtCore 0012 #include <QHash> 0013 #include <QObject> 0014 // QtGui 0015 #include <QKeySequence> 0016 // QtWidgets 0017 #include <QAction> 0018 0019 #include <KConfigWidgets/KStandardAction> 0020 0021 class KrMainWindow; 0022 0023 class ActionsBase : public QObject 0024 { 0025 Q_OBJECT 0026 protected: 0027 ActionsBase(QObject *parent, KrMainWindow *mainWindow) 0028 : QObject(parent) 0029 , _mainWindow(mainWindow) 0030 { 0031 } 0032 class ActionGroup 0033 { 0034 QHash<QAction *, const char *> _slots; 0035 0036 public: 0037 void reconnect(QObject *recv); 0038 void addAction(QAction *action, const char *slot); 0039 }; 0040 0041 QAction *createAction(const QString &text, const QString &icon, bool isToggleAction); 0042 0043 QAction * 0044 action(QString text, QString icon, const QKeySequence &shortcut, QObject *recv, const char *slot, const QString &name, bool isToggleAction = false); 0045 QAction *action(QString text, QString icon, QKeySequence shortcut, const char *slot, QString name) 0046 { 0047 return action(text, icon, shortcut, this, slot, name); 0048 } 0049 QAction * 0050 action(QString text, QString icon, const QList<QKeySequence> &shortcuts, QObject *recv, const char *slot, const QString &name, bool isToggleAction = false); 0051 QAction * 0052 action(QString text, QString icon, const QKeySequence &shortcut, ActionGroup &group, const char *slot, const QString &name, bool isToggleAction = false); 0053 0054 KToggleAction *toggleAction(QString text, QString icon, const QKeySequence &shortcut, QObject *recv, const char *slot, QString name); 0055 KToggleAction *toggleAction(QString text, QString icon, QKeySequence shortcut, const char *slot, QString name) 0056 { 0057 return toggleAction(text, icon, shortcut, this, slot, name); 0058 } 0059 KToggleAction *toggleAction(QString text, QString icon, const QKeySequence &shortcut, ActionGroup &group, const char *slot, QString name); 0060 0061 QAction *stdAction(KStandardAction::StandardAction id, QObject *recv, const char *slot); 0062 QAction *stdAction(KStandardAction::StandardAction id, const char *slot) 0063 { 0064 return stdAction(id, this, slot); 0065 } 0066 QAction *stdAction(KStandardAction::StandardAction id, ActionGroup &group, const char *slot); 0067 0068 KrMainWindow *_mainWindow; 0069 }; 0070 0071 #endif // ACTIONSBASE_H