34 #include <QAbstractTransition>
48 connect(
this, SIGNAL(started()),
this, SLOT(startedSlot()));
49 mActionGroup =
new QActionGroup(
this);
61 this->setInitialState(mParentState);
62 mParentState->setInitialState(patientData);
64 connect(mBackend->getPatientService().get(), SIGNAL(clinicalApplicationChanged()),
this, SLOT(clinicalApplicationChangedSlot()));
67 void WorkflowStateMachine::clinicalApplicationChangedSlot()
72 void WorkflowStateMachine::startedSlot()
77 WorkflowState* WorkflowStateMachine::newState(WorkflowState* state)
79 RequestEnterStateTransition* transToState =
new RequestEnterStateTransition(state->getUid());
80 transToState->setTargetState(state);
81 mParentState->addTransition(transToState);
85 mStates[state->getUid()] = state;
99 this->fillActionGroup(mParentState, mActionGroup);
101 QList<QAction *> actions = mActionGroup->actions();
102 for (
int i = 1; i <= actions.size(); ++i)
104 QString shortcut =
"Ctrl+" + QString::number(i);
105 actions[i - 1]->setShortcut(shortcut);
111 void WorkflowStateMachine::fillActionGroup(
WorkflowState* current, QActionGroup* group)
113 std::vector<WorkflowState*> childStates = current->
getChildStates();
115 if (childStates.empty())
121 for (
unsigned i = 0; i < childStates.size(); ++i)
122 this->fillActionGroup(childStates[i], group);
135 QSet<QAbstractState *> states = this->configuration();
136 for (QSet<QAbstractState *>::iterator iter = states.begin(); iter != states.end(); ++iter)
void activeStateChanged()
void setActiveState(QString uid)
virtual QString getUid() const
Utility class for StateService states.
boost::shared_ptr< class StateServiceBackend > StateServiceBackendPtr
std::vector< WorkflowState * > getChildStates()
QActionGroup * getActionGroup()
QString getActiveUidState()
virtual ~WorkflowStateMachine()
void activeStateAboutToChange()
QAction * createAction(QActionGroup *group)
State in a WorkflowStateMachine.
WorkflowStateMachine(StateServiceBackendPtr backend)