29 #include <arcs/arcsstatemachine.h>
31 #include <QMutableHashIterator>
33 ARCSStateMachine::ARCSStateMachine()
42 if (firstSheetName == oldName)
43 firstSheetName = newName;
44 if (lastSheetName == oldName)
45 lastSheetName = newName;
46 if (currentSheetName == oldName)
47 currentSheetName = newName;
49 if (transitions.contains(oldName))
51 QHash<QString,QString> value = transitions.take(oldName);
52 transitions.insert(newName,value);
56 QMutableHashIterator<QString, QHash<QString,QString> > it(transitions);
61 QMutableHashIterator<QString,QString> ite(it.value());
66 if (ite.value() == oldName)
67 ite.setValue(newName);
73 void ARCSStateMachine::addTransition(QString bState, QString token, QString eState)
75 if (transitions.empty())
76 firstSheetName = bState;
80 if ( !transitions.contains(bState) )
81 transitions.insert(bState, QHash<QString, QString>());
83 transitions[bState].insert(token, eState);
87 void ARCSStateMachine::clear()
90 firstSheetName = QString::null;
91 lastSheetName = QString::null;
95 void ARCSStateMachine::start()
98 currentSheetName = firstSheetName;
101 if (currentSheetName == lastSheetName)
109 if (transitions.contains(currentSheetName))
111 if (transitions[currentSheetName].contains(s))
113 currentSheetName = transitions[currentSheetName][s];
115 if ( currentSheetName == lastSheetName)
122 void ARCSStateMachine::getTransitions(QStringList & bState, QStringList & token, QStringList & eState)
129 QHashIterator<QString, QHash<QString,QString> > it(transitions);
134 QHashIterator<QString,QString> ite(it.value());
139 bState << (it.key());
140 token << (ite.key());
141 eState << (ite.value());
void finished()
signal emitted when a state labelled as last state of the statemachine is reached.
void renameSheet(QString oldName, QString newName)
Renames a sheet in the set of transitions.
void sendSheet(QString s)
signal emitted when a transition has been triggered.