3 public class EflVala
.ViewState
5 protected ViewStateMachine state_machine
;
6 protected Eina
.Hash
<string, ViewState
> transition_map
= null;
8 public ViewState(ViewStateMachine sm
)
10 transition_map
= Eina
.Hash
.string_superfast(null);
11 this
.state_machine
= sm
;
14 public void transition_add(string transition
, ViewState next
)
16 transition_map
.add(transition
, next
);
19 public ViewState?
transition_handle(string condition
)
21 return transition_map
.find(condition
);
24 public virtual void activated()
28 public virtual void deactivated()
32 public virtual weak Elm
.Object?
object_get()
38 public class EflVala
.ViewStateMachine
40 private Elm
.Pager pager
;
41 private ViewState current_state
;
43 public ViewStateMachine(Elm
.Win win
)
47 pager
= new Elm
.Pager(win
);
48 win
.resize_object_add(pager
);
52 public new
void state_register(ViewState? state
)
54 pager
.content_push(state
.object_get());
57 public void current_state_set(ViewState state
)
59 if(current_state
!= null)
60 current_state
.deactivated();
61 current_state
= state
;
62 current_state
.activated();
65 public void emit(string condition
)
67 ViewState new_state
= null;
69 if(current_state
== null)
71 debug("no current state!");
75 new_state
= current_state
.transition_handle(condition
);
77 current_state_set(new_state
);
79 pager
.content_promote(((ViewState
)current_state
).object_get());