Commit #9: More classes + Extractor with Rahmadi's editions + Fixing some bugs
[smartthings-infrastructure.git] / MusicPlayer / MusicPlayers.groovy
1 //Create a class for music player
2 package MusicPlayer
3 import Timer.SimulatedTimer
4
5
6 public class MusicPlayers {
7         private int deviceNumbers
8         private List musicPlayers
9         def sendEvent
10
11         //For one device(We cannot have obj.id)-> We should have obj[0].id
12         private String id = "musicPlayerID0"
13         private String label = "musicPlayer0"
14         private String displayName = "musicPlayer0"
15         private int level = 20
16         private String mute = "unmuted"
17         private String status = "pause"
18         private int trackNumber = 0
19         private List trackData = ["track1", "track2", "track3", "track4"]
20
21         
22                 
23         MusicPlayers(Closure sendEvent, int deviceNumbers) {
24                 this.sendEvent = sendEvent
25                 this.deviceNumbers = deviceNumbers
26                 this.musicPlayers = []
27
28                 musicPlayers.add(new MusicPlayer(id, label, displayName, this.level, this.mute, this.status, this.trackNumber, this.trackData))
29         }
30
31         //Methods for closures
32         def count(Closure Input) {
33                 musicPlayers.count(Input)
34         }
35         def size() {
36                 musicPlayers.size()
37         }
38         def each(Closure Input) {
39                 musicPlayers.each(Input)
40         }
41         def find(Closure Input) {
42                 musicPlayers.find(Input)
43         }
44         def collect(Closure Input) {
45                 musicPlayers.collect(Input)
46         }
47
48         //methods
49         def mute() {
50                 musicPlayers[0].mute()
51                 this.mute = "muted"
52         }
53         def nextTrack() {
54                 musicPlayers[0].nextTrack()
55                 this.status = "playing"
56                 this.trackNumber = musicPlayers[0].trackNumber
57         }
58         def pause() {
59                 musicPlayers[0].pause()
60                 this.status = "paused"
61         }
62         def play() {
63                 musicPlayers[0].play()
64                 this.status = "playing"
65         }
66         def playTrack(String trackToPlay) {
67                 musicPlayers[0].playTrack(trackToPlay)
68                 this.status = "playing"
69                 this.trackNumber = musicPlayers[0].trackNumber
70         }
71         def previousTrack() {
72                 musicPlayers[0].previousTrack()
73                 this.status = "playing"
74                 this.trackNumber = musicPlayers[0].trackNumber
75         }
76         def restoreTrack(String trackToRestore) {
77                 musicPlayers[0].restoreTrack(trackToRestore)
78         }
79         def resumeTrack(String trackToResume) {
80                 musicPlayers[0].resumeTrack(trackToResume)
81                 this.status = "playing"
82         }
83         def setLevel(int level) {
84                 musicPlayers[0].setLevel(level)
85                 this.level = level
86         }
87         def setTrack(String trackToSet) {
88                 musicPlayers[0].setTrack(trackToSet)
89                 this.status = "playing"
90                 this.trackNumber = musicPlayers[0].trackNumber
91         }
92         def stop() {
93                 musicPlayers[0].stop()
94                 this.status = "stopped"
95         }
96
97         def currentValue(String deviceFeature) {
98                 musicPlayers[0].currentValue(deviceFeature)
99         }
100
101         def getAt(int ix) {
102                 musicPlayers[ix]
103         }
104 }