evas.vapi: bind HINT_EXPAND and HINT_FILL
[libeflvala.git] / eflvala / statemachine.vala
blob8690446cf14c533ec4192a9a213de5e343f60485
1 using GLib;
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()
34 return null;
38 public class EflVala.ViewStateMachine
40 private Elm.Pager pager;
41 private ViewState current_state;
43 public ViewStateMachine(Elm.Win win)
45 current_state = null;
47 pager = new Elm.Pager(win);
48 win.resize_object_add(pager);
49 pager.show();
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!");
72 return;
75 new_state = current_state.transition_handle(condition);
76 if(new_state != null)
77 current_state_set(new_state);
79 pager.content_promote(((ViewState)current_state).object_get());