1
/****************************************************************************
5
Copyright (C) 1999-2001 Lubos Lunak <l.lunak@kde.org>
7
Distributed under the terms of the GNU General Public License version 2.
9
****************************************************************************/
11
#include "action_data/action_data.h"
13
#include "action_data/action_data_visitor.h"
14
#include "actions/actions.h"
15
#include "triggers/triggers.h"
17
#include <kconfiggroup.h>
25
ActionData::ActionData(
26
ActionDataGroup* parent_P,
27
const QString& name_P,
28
const QString& comment_P,
29
Trigger_list* triggers_P,
30
Condition_list* conditions_P,
31
ActionList* actions_P)
32
: ActionDataBase( parent_P, name_P, comment_P, conditions_P),
33
_triggers( triggers_P ),
37
_triggers = new Trigger_list;
40
_actions = new ActionList;
44
void ActionData::accept(ActionDataConstVisitor *visitor) const
46
visitor->visitActionData(this);
50
ActionData::~ActionData()
52
delete _triggers; _triggers = NULL;
53
delete _actions; _actions = NULL;
57
void ActionData::accept(ActionDataVisitor *visitor)
59
visitor->visitActionData(this);
62
void ActionData::doDisable()
64
triggers()->disable();
68
void ActionData::doEnable()
75
Trigger_list* ActionData::triggers()
81
const Trigger_list* ActionData::triggers() const
87
void ActionData::aboutToBeErased()
89
_triggers->aboutToBeErased();
90
_actions->aboutToBeErased();
93
const ActionList* ActionData::actions() const
99
ActionList* ActionData::actions()
105
void ActionData::execute()
107
for( ActionList::Iterator it = _actions->begin();
108
it != _actions->end();
114
void ActionData::add_trigger( Trigger* trigger_P )
116
_triggers->append( trigger_P );
120
void ActionData::add_triggers( Trigger_list* triggers_P )
122
while (!triggers_P->isEmpty())
124
_triggers->append( triggers_P->takeFirst() );
126
Q_ASSERT( triggers_P->isEmpty());
131
void ActionData::set_triggers( Trigger_list* triggers_P )
133
if (_triggers) delete _triggers;
135
_triggers = triggers_P;
139
void ActionData::add_action(Action* action, Action* after)
143
int index = _actions->indexOf(after);
152
_actions->append(action);
157
void ActionData::add_actions( ActionList* actions_P, Action* after_P )
160
for( ActionList::Iterator it = _actions->begin();
161
it != _actions->end();
169
while (!actions_P->empty())
171
// Insert the actions to _actions after removing them from actions_P
172
// to prevent their deletion upon delete actions_P below.
173
_actions->insert( ++index, actions_P->takeFirst() );
175
Q_ASSERT( actions_P->isEmpty());
180
void ActionData::set_actions( ActionList* actions_P )
182
if (_actions) delete _actions;
183
_actions = actions_P;
187
void ActionData::update_triggers()
189
if (!_triggers) return;
191
bool activate = false;
192
// Activate the triggers if the actions is enabled and the conditions
194
if (isEnabled() && conditions_match())
199
for( Trigger_list::Iterator it = _triggers->begin();
200
it != _triggers->end();
203
(*it)->activate(activate);
208
} // namespace KHotKeys