File indexing completed on 2024-04-28 16:44:51

0001 /*
0002     SPDX-License-Identifier: GPL-2.0-only
0003     SPDX-FileCopyrightText: 1999-2001 Lubos Lunak <l.lunak@kde.org>
0004  */
0005 
0006 #ifndef ACTION_DATA_H
0007 #define ACTION_DATA_H
0008 
0009 #include "action_data_base.h"
0010 
0011 namespace KHotKeys
0012 {
0013 class Action;
0014 class ActionDataGroup;
0015 class ActionList;
0016 class Trigger_list;
0017 class Trigger;
0018 
0019 // TODO : code documentation
0020 class Q_DECL_EXPORT ActionData : public ActionDataBase
0021 {
0022     typedef ActionDataBase base;
0023 
0024 public:
0025     ActionData(ActionDataGroup *parent_P,
0026                const QString &name_P,
0027                const QString &comment_P,
0028                Trigger_list *triggers_P,
0029                Condition_list *conditions_P,
0030                ActionList *actions_P);
0031 
0032     ~ActionData() override;
0033 
0034     /**
0035      * Visitor pattern
0036      * @reimp
0037      */
0038     void accept(ActionDataVisitor *visitor) override;
0039     void accept(ActionDataConstVisitor *visitor) const override;
0040 
0041     void update_triggers() override;
0042 
0043     virtual void execute();
0044 
0045     /**
0046      * @reimp
0047      */
0048     void aboutToBeErased() override;
0049 
0050     const Trigger_list *triggers() const;
0051     Trigger_list *triggers();
0052 
0053     const ActionList *actions() const;
0054     ActionList *actions();
0055 
0056     virtual void add_trigger(Trigger *trigger_P);
0057 
0058     virtual void add_triggers(Trigger_list *triggers_P); // Trigger_list instance will be deleted
0059 
0060     virtual void set_triggers(Trigger_list *triggers_P);
0061 
0062     virtual void add_action(Action *action_P, Action *after_P = nullptr);
0063 
0064     virtual void add_actions(ActionList *actions_P,
0065                              Action *after_P = nullptr); // ActionList will be deleted
0066 
0067     virtual void set_actions(ActionList *actions_P);
0068 
0069 private:
0070     Trigger_list *_triggers;
0071     ActionList *_actions;
0072 
0073     void doEnable() override;
0074     void doDisable() override;
0075 };
0076 
0077 } // namespace KHotKeys
0078 
0079 #endif