]> git.basschouten.com Git - openhab-addons.git/blob
92d4237985d0be25205655589485051fbc99ada5
[openhab-addons.git] /
1 /**
2  * Copyright (c) 2010-2023 Contributors to the openHAB project
3  *
4  * See the NOTICE file(s) distributed with this work for additional
5  * information.
6  *
7  * This program and the accompanying materials are made available under the
8  * terms of the Eclipse Public License 2.0 which is available at
9  * http://www.eclipse.org/legal/epl-2.0
10  *
11  * SPDX-License-Identifier: EPL-2.0
12  */
13 package org.openhab.binding.squeezebox.internal.handler;
14
15 import org.slf4j.Logger;
16 import org.slf4j.LoggerFactory;
17
18 /**
19  * The {@link SqueezeBoxPlayerState} is responsible for saving the state of a player.
20  *
21  * @author Mark Hilbush - Initial contribution
22  * @author Patrik Gfeller - Moved class to its own file.
23  */
24 class SqueezeBoxPlayerState {
25     private final Logger logger = LoggerFactory.getLogger(SqueezeBoxPlayerState.class);
26
27     private boolean savedMute;
28     private boolean savedPower;
29     private boolean savedStop;
30     private boolean savedControl;
31
32     private int savedVolume;
33     private int savedShuffle;
34     private int savedRepeat;
35     private int savedPlaylistIndex;
36     private int savedNumberPlaylistTracks;
37     private int savedPlayingTime;
38
39     private SqueezeBoxPlayerHandler playerHandler;
40
41     public SqueezeBoxPlayerState(SqueezeBoxPlayerHandler playerHandler) {
42         this.playerHandler = playerHandler;
43         save();
44     }
45
46     boolean isMuted() {
47         return savedMute;
48     }
49
50     boolean isPoweredOn() {
51         return savedPower;
52     }
53
54     boolean isStopped() {
55         return savedStop;
56     }
57
58     boolean isPlaying() {
59         return savedControl;
60     }
61
62     boolean isShuffling() {
63         return savedShuffle != 0;
64     }
65
66     int getShuffle() {
67         return savedShuffle;
68     }
69
70     boolean isRepeating() {
71         return savedRepeat != 0;
72     }
73
74     int getRepeat() {
75         return savedRepeat;
76     }
77
78     int getVolume() {
79         return savedVolume;
80     }
81
82     int getPlaylistIndex() {
83         return savedPlaylistIndex;
84     }
85
86     private int getNumberPlaylistTracks() {
87         return savedNumberPlaylistTracks;
88     }
89
90     int getPlayingTime() {
91         return savedPlayingTime;
92     }
93
94     private void save() {
95         savedVolume = playerHandler.currentVolume();
96         savedMute = playerHandler.currentMute();
97         savedPower = playerHandler.currentPower();
98         savedStop = playerHandler.currentStop();
99         savedControl = playerHandler.currentControl();
100         savedShuffle = playerHandler.currentShuffle();
101         savedRepeat = playerHandler.currentRepeat();
102         savedPlaylistIndex = playerHandler.currentPlaylistIndex();
103         savedNumberPlaylistTracks = playerHandler.currentNumberPlaylistTracks();
104         savedPlayingTime = playerHandler.currentPlayingTime();
105
106         logger.debug("Cur State: vol={}, mut={}, pwr={}, stp={}, ctl={}, shf={}, rpt={}, tix={}, tnm={}, tim={}",
107                 savedVolume, muteAsString(), powerAsString(), stopAsString(), controlAsString(), shuffleAsString(),
108                 repeatAsString(), getPlaylistIndex(), getNumberPlaylistTracks(), getPlayingTime());
109     }
110
111     private String muteAsString() {
112         return isMuted() ? "MUTED" : "NOT MUTED";
113     }
114
115     private String powerAsString() {
116         return isPoweredOn() ? "ON" : "OFF";
117     }
118
119     private String stopAsString() {
120         return isStopped() ? "STOPPED" : "NOT STOPPED";
121     }
122
123     private String controlAsString() {
124         return isPlaying() ? "PLAYING" : "PAUSED";
125     }
126
127     private String shuffleAsString() {
128         String shuffle = "OFF";
129         if (getShuffle() == 1) {
130             shuffle = "SONG";
131         } else if (getShuffle() == 2) {
132             shuffle = "ALBUM";
133         }
134         return shuffle;
135     }
136
137     private String repeatAsString() {
138         String repeat = "OFF";
139         if (getRepeat() == 1) {
140             repeat = "SONG";
141         } else if (getRepeat() == 2) {
142             repeat = "PLAYLIST";
143         }
144         return repeat;
145     }
146
147     /***
148      * Return the player state as {@link SqueezeBoxPlayerPlayState}
149      *
150      * @return {@link SqueezeBoxPlayerPlayState}
151      */
152     SqueezeBoxPlayerPlayState getPlayState() {
153         if (!isPlaying() && !isStopped()) {
154             return SqueezeBoxPlayerPlayState.PAUSE;
155         }
156
157         if (isPlaying()) {
158             return SqueezeBoxPlayerPlayState.PLAY;
159         }
160
161         return SqueezeBoxPlayerPlayState.STOP;
162     }
163 }