Class: Playa::Controller

Inherits:
Object
  • Object
show all
Includes:
Vedeu
Defined in:
lib/playa/controllers/controller.rb

Instance Method Summary collapse

Constructor Details

#initialize(args = []) ⇒ Controller

Returns a new instance of Controller.



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
# File 'lib/playa/controllers/controller.rb', line 5

def initialize(args = [])
  @player = Player.new

  event :_initialize_ do
    trigger(:show_startup)
  end

  event :show_startup do
    trigger(:_clear_)

    StartupView.render

    trigger(:_refresh_group_player_)
  end

  event :show_help do
    trigger(:_clear_)

    HelpView.render

    trigger(:_refresh_help_)
  end

  event :show_player do
    trigger(:_clear_)

    PlaylistView.render(menu)
    StatusView.render
    ProgressView.render(@player)

    trigger(:_refresh_group_player_)
  end

  event :update do
    PlaylistView.render(menu)
    trigger(:_refresh_playlist_)
  end

  event :progress_update, 0.5 do
    ProgressView.render(@player)
    trigger(:_refresh_progress_)
  end

  event :select do |track|
    trigger(:play, track)
  end

  event :complete do
    trigger(:menu_next)
    trigger(:menu_select)
    trigger(:select, menu.current_item)
    trigger(:update)
  end

  event :key do |key|
    case key
    when :left, 'h'  then trigger(:rewind)
    when :right, 'l' then trigger(:forward)
    when ' '    then trigger(:toggle)
    when :up, 'k' then
      trigger(:menu_prev)
      trigger(:update)
    when :down, 'j' then
      trigger(:menu_next)
      trigger(:update)
    when '?' then trigger(:show_help)
    when 'p', 's' then trigger(:show_player)
    when 'q' then trigger(:_exit_)
    when :enter
      trigger(:menu_select)
      trigger(:select, menu.current_item)
      trigger(:update)
    end
  end

  @player.events.on(:position_change) { trigger(:progress_update) }
  @player.events.on(:complete)        { trigger(:complete) }

  @args = args
  trigger(:show_startup)
end