Removed RCS headers.
[euphoria.git] / lib / slider.rb
1 class Slider
2         def initialize(edje, xmms, part, config)
3                 @edje = edje
4                 @xmms = xmms
5                 @part = part
6                 @config = config
7                 @val = nil
8
9                 self.value = @xmms.configval_get(config).wait.value
10
11                 @edje.on_signal("drag", @part) do
12                         v = on_drag(@edje.part(@part).get_drag_value)
13                         @xmms.configval_set(@config, v).wait unless v.nil?
14                 end
15         end
16
17         def value=(v)
18         end
19
20 protected
21         def on_drag(d)
22         end
23 end
24
25 class VolumeSlider < Slider
26         attr_reader :part, :config
27
28         def initialize(edje, xmms, part)
29                 @edje = edje
30                 @xmms = xmms
31                 @part = part
32                 @val = nil
33
34                 self.value = @xmms.playback_volume_get.wait.value
35
36                 @edje.on_signal("drag", @part) do
37                         v = on_drag(@edje.part(@part).get_drag_value)
38
39                         unless v.nil?
40                                 @xmms.playback_volume_set("left", v).wait
41                                 @xmms.playback_volume_set("right", v).wait
42                         end
43                 end
44         end
45
46         def value=(v)
47                 v = (1.0 - (v[:left].to_f / 100.0)).abs
48
49                 if !@val || @val != v
50                         @val = v
51                         @edje.part(@part).set_drag_value(0.1, v)
52                 end
53         end
54
55         def on_drag(d)
56                 ret = nil
57                 v = (1.0 - d[1]).abs
58
59                 if @val != v
60                         @val = v
61                         ret = (v * 100).to_i
62                 end
63
64                 ret
65         end
66 end
67
68 class EqSlider < Slider
69         attr_reader :part, :config
70
71         def value=(v)
72                 v = (1.0 - v.to_f).abs
73
74                 if !@val || @val != v
75                         @val = v
76                         @edje.part(@part).set_drag_value(0.1, v)
77                 end
78         end
79
80         def on_drag(d)
81                 ret = nil
82                 v = (1.0 - d[1]).abs
83
84                 if @val != v
85                         @val = v
86                         ret = v.to_s
87                 end
88
89                 ret
90         end
91 end