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