~killerkiwi2005/earcandy/0.7

« back to all changes in this revision

Viewing changes to earcandy/SinkInput.py

  • Committer: jason
  • Date: 2010-04-14 22:05:39 UTC
  • Revision ID: jason@ender-20100414220539-m4ed1w6dnxtfnrje
essage=per stream

Show diffs side-by-side

added added

removed removed

Lines of Context:
19
19
import datetime 
20
20
         
21
21
class SinkInput():
22
 
    def __init__(self, index, name, volume, sink):
 
22
    def __init__(self, index, name, volume, sink, role):
23
23
 
24
24
        self.index = index
25
25
        self.name = name
26
26
        self.client = None
27
27
        self.volume = volume
28
28
        self.sink = sink
 
29
        self.__role = role
29
30
 
30
31
        self.volume_meter_level = 0
31
32
        self.volume_meter_last_non_zero_timestamp = time.mktime(datetime.datetime.min.timetuple())
32
33
 
 
34
        self.volume_target = 100
 
35
 
33
36
        self.__previous_volume = 0
34
37
 
35
38
        self.volume_check = True
 
39
 
 
40
 
 
41
    def get_media_role(self):
 
42
        if not self.__role: return self.client.role
 
43
        return self.__role
 
44
 
 
45
    def set_media_role(self, role):
 
46
        self.__role = role
 
47
 
 
48
    role = property(get_media_role, set_media_role)
 
49
 
36
50
 
37
51
    def set_meter(self, meter_level):
38
52
        timestamp = math.floor(time.mktime(datetime.datetime.now().timetuple()))
47
61
            return True
48
62
        return False
49
63
 
 
64
 
 
65
 
 
66
    ## new per sink settings ##
50
67
    def set_volume(self):
51
68
 
52
69
        current_volume = round(self.volume[0])
53
70
        step_volume = current_volume
54
71
        result = True
55
72
 
56
 
        if current_volume < self.client.volume_target:      
 
73
        if current_volume < self.volume_target:      
57
74
            step_volume = current_volume + self.client.volume_step
58
 
            if not self.client.fade_volume: step_volume = self.client.volume_target
59
 
        elif current_volume > self.client.volume_target: 
 
75
            if not self.client.fade_volume: step_volume = self.volume_target
 
76
        elif current_volume > self.volume_target: 
60
77
            step_volume = current_volume - self.client.volume_step
61
 
            if not self.client.fade_volume: step_volume = self.client.volume_target
 
78
            if not self.client.fade_volume: step_volume = self.volume_target
62
79
        
63
80
        if step_volume > 100:
64
81
            step_volume = 100
84
101
        self.__previous_volume = step_volume       
85
102
        return result
86
103
 
 
104
    def get_volume_meter(self):
 
105
        return sink.volume_meter_level
 
106
 
 
107
    def __fade_in(self):
 
108
        self.volume_target = self.client.volume_max
 
109
 
 
110
    def __fade_out(self):
 
111
        if self.client.volume_min == -1:
 
112
            self.volume_target = self.client.core.mute_level
 
113
        else:
 
114
            self.volume_target = self.client.volume_min
 
115
 
 
116
    def __fade_mute(self):
 
117
 
 
118
        if self.client.volume_min == -1:
 
119
            self.volume_target = self.client.core.mute_level
 
120
        else:
 
121
            self.volume_target = self.client.volume_min
 
122
 
 
123
        # if we goto 0 than our volume meter will never register a value
 
124
        if self.volume_target < self.client.volume_step:
 
125
            self.volume_target = self.client.volume_step
 
126
    
 
127
    def set_status(self, value):
 
128
        if value or self.role == "default":
 
129
            self.__fade_in()
 
130
            #if self.__pause_status > 0:
 
131
            #    for plugin in self.plugins:
 
132
            #        if plugin.enabled and not plugin.is_playing():
 
133
            #            if plugin.set_pause(False): 
 
134
            #                self.__pause_status = 0
 
135
        else:
 
136
            self.__fade_mute()
 
137
            #if self.is_active() and self.__pause_status == 0:                 
 
138
            #    self.__pause_status = 1
 
139
        self.__status = value
 
140
 
 
141
 
 
142
 
 
143
 
 
144
 
 
145
 
 
146
 
 
147
 
 
148