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