]> git.basschouten.com Git - openhab-addons.git/blob
f21f34801d959ed64e73edfe8ba588b1764e25fd
[openhab-addons.git] /
1 /**
2  * Copyright (c) 2010-2022 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.heos.internal.handler;
14
15 import java.io.IOException;
16
17 import org.eclipse.jdt.annotation.NonNullByDefault;
18 import org.eclipse.jdt.annotation.Nullable;
19 import org.openhab.binding.heos.internal.exception.HeosNotFoundException;
20 import org.openhab.binding.heos.internal.resources.HeosConstants;
21 import org.openhab.binding.heos.internal.resources.HeosEventListener;
22 import org.openhab.binding.heos.internal.resources.Telnet.ReadException;
23 import org.openhab.core.library.types.OnOffType;
24 import org.openhab.core.thing.ThingUID;
25 import org.openhab.core.types.Command;
26 import org.openhab.core.types.RefreshType;
27
28 /**
29  * The {@link HeosChannelHandlerShuffleMode} handles the SchuffelModechannel command
30  * from the implementing thing.
31  *
32  * @author Johannes Einig - Initial contribution
33  */
34 @NonNullByDefault
35 public class HeosChannelHandlerShuffleMode extends BaseHeosChannelHandler {
36     private final HeosEventListener eventListener;
37
38     public HeosChannelHandlerShuffleMode(HeosEventListener eventListener, HeosBridgeHandler bridge) {
39         super(bridge);
40         this.eventListener = eventListener;
41     }
42
43     @Override
44     public void handlePlayerCommand(Command command, String id, ThingUID uid) throws IOException, ReadException {
45         handleCommand(command, id);
46     }
47
48     @Override
49     public void handleGroupCommand(Command command, @Nullable String id, ThingUID uid,
50             HeosGroupHandler heosGroupHandler) throws IOException, ReadException {
51         if (id == null) {
52             throw new HeosNotFoundException();
53         }
54
55         handleCommand(command, id);
56     }
57
58     @Override
59     public void handleBridgeCommand(Command command, ThingUID uid) {
60         // Do nothing
61     }
62
63     private void handleCommand(Command command, String id) throws IOException, ReadException {
64         if (command instanceof RefreshType) {
65             eventListener.playerStateChangeEvent(getApi().getPlayMode(id));
66             return;
67         }
68         if (command == OnOffType.ON) {
69             getApi().setShuffleMode(id, HeosConstants.ON);
70         } else if (command == OnOffType.OFF) {
71             getApi().setShuffleMode(id, HeosConstants.OFF);
72         }
73     }
74 }