ahelper

<<< Back

Виджет: Универсальный пульт 3в1.

Ввиду отсутствия в MajorDomo пультов для управления бытовой техникой, под свои цели создал четыре пульта в одном виджете. Здесь попробую немного объяснить для тех, кто сам решится на дальнейшую доработку под свои цели.

Началось все с одного простенького пульта Samsung. Весь код состоит из HTML + CSS + картинки. Так как, что то стало получаться, решил на каждое устройство создать свой пульт в плане дизайна. Все реальные кнопки решил не делать, только необходимые, часто используемые.

Очень помогла вот эта тема (не помню каким хорошим человеком подкинутая) https://ab-log.ru/forum/viewtopic.php?f=1&t=1328&start=40 много интересного еще там. За что ему огромное СПАСИБО!

Установочный пакет состоит из папок с файлами:
1) Папка "import > classes" в ней файл импорта классов, объектов и методов.
2) Папка "templates > classes > views" в ней html файл отображения, по этому же пути он портируется в MajorDomo.
3) Папка "templates_alt > TVRemotes " содержит паки с иконками картинок и файл стиля отображения CSS, также портируются по этому же пути.
4) В корне пакета лежит файл install.php, это установочный файл.

В папках "icons" дополнительно имеется файл "пустой" кнопки, на которую можно добавить своё изображение. Таким образом заменив иконки кнопок, получается другая функциональность кнопки. Сам эту задачу выполнял в Photoshop.

При установке файла портируется все в систему, Иконки, Файлы отображения, Классы, Объекты и Методы. Из файла install.php прописываются свойства объектов.
Свойство "RemoteTitle" - название пульта, используется для проговаривания в методах нажатия кнопок (для проверки и удобства), а также на пульте Ростелекома отображается вверху (у меня используется для двух одинаковых пультов, на одном "Спальня", на другом "Зал").
Свойство "RemoteVisible" 0 или 1 - отображать пульт или скрывать!

В файле отображения "TVRemotes_3in1.html" находятся три пульта в которых прописаны все кнопки с "привязаными" к ним методами.
Пример одной кнопки:

<div class="button1" tabindex="1" onClick='callMethod("TV_LG.Sound_+");'>
                <img src="/templates_alt/TVRemotes/icons/samsung_volplus.png" style="height: 50px;"/>
            </div>

В ней мы видим, что кнопка запускает код "callMethod("TVLG.Sound+");" ,у объекта "TVLG " метод "Sound+". Иконка этой кнопки "samsung_volplus.png" находящаяся в папке "icons".
Для того, чтобы не лазить и не искать методом тыка какой метод на какой кнопке висит, в методах уже прописан код проговаривания метода (хотя по названию метода можно тоже понять).

say($this->getProperty('RemoteTitle'). ' звук +', 1);

Соответственно нажав на кнопку, в сообщениях системы можно проследить какой метод нужен. Прописав в методах свой код, получаете безграничные возможности реализаций управления пультами.

Отдельно остановлюсь на реализации 3в1. Так как стандартные средства системы MajorDomo позволяют в сценах скрывать элементы, а в меню нет. И три пульта в меню занимают много места, или необходимо делать лишние манипуляции. Решил объединить в один файл все пульты. Скрытие этих пультов делает код:

<div style='display:%TV_LG.RemoteVisible|"none;block"%'>
кнопки кнопки кнопки
</div>

Если в свойстве объекта "TV_LG.RemoteVisible" - 0, то пульт марки LG не отобразится, будет как бы свернутым в тонкую невидимую полоску.
Как вы заметили для этого есть самый нижний ряд кнопок. По нажатию которых запускается Родительский метод с кодом и происходит переключение на соответствующий пульт. Только в меню обновление пультов немного подтормаживает, еще может тупить при проговаривании.

Теперь как менять задний фон? Вариант №:
1) Находите в файлах системы папку "/templates_alt/TVRemotes", в ней файл "styles3in1.css", в котором первые три контейнера это основной стиль каждого пульта.
Пример:

.containerLG {
        background-image: url("/templates_alt/TVRemotes/icons3/main_bg.jpg");
        background-color: rgba(0, 0, 0, 0.3);
        border-radius: 15px;
        border: 1px solid #444;
        text-align: center;
        width: 260px;
    }

Закомментируйте // background-image: url("/templates_alt/TVRemotes/icons3/main_bg.jpg"); и будет у вас темный фон. Изменив цифры в background-color: rgba(0, 0, 0, 0.3); получите необходимый цвет фона.
2) Если однотонный фон вам не нравится, то можно переименовать "main_bg.jpg" в название вашего файла, который предварительно поместите в /templates_alt/TVRemotes/icons3.

Пакет для установки находится на форуме: https://majordomo.smartliving.ru/forum/viewtopic.php?f=23&t=5451

Пока все. Дополняться будет по мере возникновения вопросов.

Настоятельно НЕ рекомендую повторно УСТАНАВЛИВАТЬ установочный пакет 3в1, так как если вы произвели изменения в свойствах, но не изменили название объекта. Произойдет ПЕРЕЗАПИСЬ ваших изменений, и возможно криво!!!

Решение: Переименовать Класс "TVRemotes_3in1"перед повторной установкой.

Если необходимо начать все с нуля, то необходимо вручную удалить Объекты и Классы относящиеся к Классу "TVRemotes". И произвести установку.

Discuss (0) (5)

Малоярославец, Россия

На форуме: ahelper