From bc019d14e0e74127b6386d50b5975318feb73ce0 Mon Sep 17 00:00:00 2001 From: coen1111 Date: Wed, 9 Nov 2022 13:30:48 +0100 Subject: [PATCH] Added support for color buttons row and digit rows --- README.md | 31 ++++++++++++++++++++++++++++--- assets/digits_color_buttons.png | Bin 0 -> 7973 bytes tv-card.js | 24 +++++++++++++++++++++++- 3 files changed, 51 insertions(+), 4 deletions(-) create mode 100644 assets/digits_color_buttons.png diff --git a/README.md b/README.md index f42e1bb..1027475 100644 --- a/README.md +++ b/README.md @@ -52,14 +52,14 @@ media_control_row: - fast_forward ``` -The available rows are `power_row`, `channel_row`, `apps_row`, `source_row` and `media_control_row` -There also `volume_row` and `navigation_row`, but these requires a string as value. +The available rows are `power_row`, `channel_row`, `apps_row`, `source_row`, `media_control_row`, `first_digits_row`, `second_digits_row`, `third_digits_row`, `fourth_digits_row`,`buttons_row` +There also `volume_row`, `navigation_row` and `digits_row`, but these requires a string as value. | Name | Type | Description | ---- | ---- | ------- | volume_row | string | Can be either `slider` or `buttons`. This defines the mode you want for setting the volume (you'll see them soon below). You need to have [slider-card](https://github.com/AnthonMS/my-cards) installed in order to use `slider`. | navigation_row | string | Can be either `touchpad` or `buttons`. This defines the mode you want for navigating around your tv (you'll also see them soon below). - +| navigation_row | string | Can only be `buttons`. ## **Notice** This card uses `media_player.play_media` to send keys to the TV. @@ -313,6 +313,31 @@ Result: less example +### Example 4 + +Digits and color buttons added + +```yaml +type: custom:tv-card +entity: media_player.tv +title: Example 4 +channel_row: + - channel_up + - channel_down +volume_row: buttons +navigation_row: buttons +buttons_row: + - redbutton + - greenbutton + - yellowbutton + - bluebutton +digits_row: buttons +``` + +Result: + +digits and color buttons example + ### Extra In any row, if you add an ampty item, there will be an empty/invisible button filling the space: diff --git a/assets/digits_color_buttons.png b/assets/digits_color_buttons.png new file mode 100644 index 0000000000000000000000000000000000000000..ae0a7dbbeeb0fafc1a24b9e6edf3ab4fa693880e GIT binary patch literal 7973 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 { @@ -343,6 +357,14 @@ class TVCardServices extends LitElement { navigation_row = [touchpad]; } content.push(...navigation_row); + } else if (row_name === "digits_row") { + let digits_row = []; + let first_row = [this.buildIconButton("digit1"), this.buildIconButton("digit2"), this.buildIconButton("digit3")]; + let second_row = [this.buildIconButton("digit4"), this.buildIconButton("digit5"), this.buildIconButton("digit6")]; + let third_row = [this.buildIconButton("digit7"), this.buildIconButton("digit8"), this.buildIconButton("digit9")]; + let fourth_row = [this.buildIconButton("digit0")]; + digits_row = [first_row, second_row, third_row, fourth_row]; + content.push(...digits_row); } else { let row_content = this.buildButtonsFromActions(row_actions); content.push(row_content);