2 * Copyright (c) 2010-2023 Contributors to the openHAB project
4 * See the NOTICE file(s) distributed with this work for additional
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
11 * SPDX-License-Identifier: EPL-2.0
13 package org.openhab.binding.squeezebox.internal.handler;
15 import org.slf4j.Logger;
16 import org.slf4j.LoggerFactory;
19 * The {@link SqueezeBoxPlayerState} is responsible for saving the state of a player.
21 * @author Mark Hilbush - Initial contribution
22 * @author Patrik Gfeller - Moved class to its own file.
24 class SqueezeBoxPlayerState {
25 private final Logger logger = LoggerFactory.getLogger(SqueezeBoxPlayerState.class);
27 private boolean savedMute;
28 private boolean savedPower;
29 private boolean savedStop;
30 private boolean savedControl;
32 private int savedVolume;
33 private int savedShuffle;
34 private int savedRepeat;
35 private int savedPlaylistIndex;
36 private int savedNumberPlaylistTracks;
37 private int savedPlayingTime;
39 private SqueezeBoxPlayerHandler playerHandler;
41 public SqueezeBoxPlayerState(SqueezeBoxPlayerHandler playerHandler) {
42 this.playerHandler = playerHandler;
50 boolean isPoweredOn() {
62 boolean isShuffling() {
63 return savedShuffle != 0;
70 boolean isRepeating() {
71 return savedRepeat != 0;
82 int getPlaylistIndex() {
83 return savedPlaylistIndex;
86 private int getNumberPlaylistTracks() {
87 return savedNumberPlaylistTracks;
90 int getPlayingTime() {
91 return savedPlayingTime;
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();
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());
111 private String muteAsString() {
112 return isMuted() ? "MUTED" : "NOT MUTED";
115 private String powerAsString() {
116 return isPoweredOn() ? "ON" : "OFF";
119 private String stopAsString() {
120 return isStopped() ? "STOPPED" : "NOT STOPPED";
123 private String controlAsString() {
124 return isPlaying() ? "PLAYING" : "PAUSED";
127 private String shuffleAsString() {
128 String shuffle = "OFF";
129 if (getShuffle() == 1) {
131 } else if (getShuffle() == 2) {
137 private String repeatAsString() {
138 String repeat = "OFF";
139 if (getRepeat() == 1) {
141 } else if (getRepeat() == 2) {
148 * Return the player state as {@link SqueezeBoxPlayerPlayState}
150 * @return {@link SqueezeBoxPlayerPlayState}
152 SqueezeBoxPlayerPlayState getPlayState() {
153 if (!isPlaying() && !isStopped()) {
154 return SqueezeBoxPlayerPlayState.PAUSE;
158 return SqueezeBoxPlayerPlayState.PLAY;
161 return SqueezeBoxPlayerPlayState.STOP;