From d33e035db784853f3bd0d305532e500089c8ec0d Mon Sep 17 00:00:00 2001 From: Zack Arnett Date: Tue, 11 Feb 2020 13:11:25 -0500 Subject: [PATCH] Update Media Card to check for supported features --- src/data/media-player.ts | 9 ++ .../lovelace/cards/hui-media-control-card.ts | 84 +++++++++++++------ 2 files changed, 66 insertions(+), 27 deletions(-) diff --git a/src/data/media-player.ts b/src/data/media-player.ts index 3aaf16e093..cfb17c91c5 100644 --- a/src/data/media-player.ts +++ b/src/data/media-player.ts @@ -3,8 +3,17 @@ import { HomeAssistant } from "../types"; import { timeCachePromiseFunc } from "../common/util/time-cache-function-promise"; export const SUPPORT_PAUSE = 1; +export const SUPPORT_VOLUME_SET = 4; +export const SUPPORT_VOLUME_MUTE = 8; +export const SUPPORT_PREVIOUS_TRACK = 16; export const SUPPORT_NEXT_TRACK = 32; +export const SUPPORT_TURN_ON = 128; +export const SUPPORT_TURN_OFF = 256; +export const SUPPORT_PLAY_MEDIA = 512; +export const SUPPORT_VOLUME_BUTTONS = 1024; +export const SUPPORT_SELECT_SOURCE = 2048; export const SUPPORTS_PLAY = 16384; +export const SUPPORT_SELECT_SOUND_MODE = 65536; export const OFF_STATES = ["off", "idle"]; export interface MediaPlayerThumbnail { diff --git a/src/panels/lovelace/cards/hui-media-control-card.ts b/src/panels/lovelace/cards/hui-media-control-card.ts index c5035a9c58..159efa1c54 100644 --- a/src/panels/lovelace/cards/hui-media-control-card.ts +++ b/src/panels/lovelace/cards/hui-media-control-card.ts @@ -16,7 +16,15 @@ import "../../../components/ha-card"; import { applyThemesOnElement } from "../../../common/dom/apply_themes_on_element"; import { computeStateName } from "../../../common/entity/compute_state_name"; import { supportsFeature } from "../../../common/entity/supports-feature"; -import { OFF_STATES, SUPPORT_PAUSE } from "../../../data/media-player"; +import { + OFF_STATES, + SUPPORT_PAUSE, + SUPPORT_TURN_ON, + SUPPORT_TURN_OFF, + SUPPORT_PREVIOUS_TRACK, + SUPPORT_NEXT_TRACK, + SUPPORTS_PLAY, +} from "../../../data/media-player"; import { hasConfigOrEntityChanged } from "../common/has-changed"; import { HomeAssistant, MediaEntity } from "../../../types"; import { LovelaceCard, LovelaceCardEditor } from "../types"; @@ -89,7 +97,9 @@ export class HuiMediaControlCard extends LitElement implements LovelaceCard { - ${OFF_STATES.includes(stateObj.state) + ${OFF_STATES.includes(stateObj.state) || + !stateObj.attributes.media_duration || + !stateObj.attributes.media_position ? "" : html` `}
- + ${(stateObj.state === "off" && + !supportsFeature(stateObj, SUPPORT_TURN_ON)) || + (stateObj.state === "on" && + !supportsFeature(stateObj, SUPPORT_TURN_OFF)) + ? "" + : html` + + `}
- - - + ${!supportsFeature(stateObj, SUPPORT_PREVIOUS_TRACK) + ? "" + : html` + + `} + ${stateObj.state !== "playing" && + !supportsFeature(stateObj, SUPPORTS_PLAY) + ? "" + : html` + + `} + ${!supportsFeature(stateObj, SUPPORT_NEXT_TRACK) + ? "" + : html` + + `}