Сегодня предлагаю вам рассмотреть изменения, сделанные в пользовательских провайдерах.
Прошлые статьи по теме:
- AIMP4: Skin Engine
- AIMP4: Skin Engine — элементы управления. Часть 1
- AIMP4: Skin Engine — элементы управления. Часть 2
- AIMP4: Skin Engine — пользовательские локализации
- AIMP4: Skin Engine — графика
- AIMP4: Skin Engine — оптимизации
Логические операторы-провайдеры
LogicalOperatorCommutator
Список точек входа увеличен до пяти:
Конечно, решать задачи, требующие более 2-х точек подключения, можно было и раньше, но, согласитесь, так намного удобнее.
LogicalOperatorCounter
Счетчик обзавелся возможностью получать сигналы от других провайдеров, а так же возможность указать ему стартовое значение — значение по умолчанию.
Благодаря введению новой переменной CurrentValue в свойствах связи, вы можете не только назначить определенное значение счетчику, но и рассчитать его на основе текущего:
LogicalOperatorTimer
Новый тип логического оператора — таймер. Таймер вызывает прилинкованное к точке доступа «Action» действие через заданный промежуток времени. Так же как и элемент управления TASEAnimator, оператор имеет точку доступа «Accessibility», которая позволяет включать / выключать таймер в зависимости от каких-либо факторов.
LogicalOperatorDelayer
Еще один новый тип логического оператора. Как понятно из названия, оператор позволяет организовать задержку передачи значения от одной точки доступа к другой. На текущий момент delayer работает только с целочисленными типами данных (Integer и Boolean).
Строковые операторы-провайдеры
StringOperatorConcatenator
Этот тип пользовательского провайдера позволяет склеить несколько текстовых значений или числовых, представленных как текст, и вернуть полученную строку в качестве результата. Как и у LogicalOperatorCommutator, на вход можно подать до пяти сигналов:
В отличии от логических операторов-провайдеров, в текстовом вам доступен другой набор функций — функции для работы с текстовыми данными. Так же, обратите внимание, что, несмотря на пять входов, в вашем распоряжении есть 10 переменных: 5 — Value и 5 — TextValue:
Отличие Value от TextValue весьма простое. Рассмотрим на примере: точка доступа Duration провайдера prvPlayingFileInfo может выдавать данные сразу в двух форматах — числовом и текстовом:
Причем текстовое значение времени будет уже форматированным, а не простым преобразованием числа в текст. Так вот, в этой ситуации Value будет обращаться к числовым данным, а TextValue — к текстовым. Все просто.
StringOperatorConcatenatorNotificator
OperatorNotificator является частным случаем StringOperatorConcatenator-а, основной его особенностью в отличие от прародителя, является возможность краткосрочно выдавать в качестве результата системные уведомления.
В прошлом вы наверняка видели, что если в плеере покрутить громкость, то в бегущей строке на пару секунд покажется текущее ее значение? Так вот, в этом и заключается работа нотификатора — он получает уведомления от плеера и на пару секунд выдает их в качестве результата своей работы, после чего возвращается к штатной работе.
OperatorNotificator был специально введен для обеспечения возможности отображения системных уведомлениях в элементах, отличных от TASERunningLine. Таким образом, теперь скин не обязан иметь бегущую строку только из-за того, что у нее есть возможность отображения уведомлений.
Наконец можно будет полностью избавиться от бегущей строки, тем самым немножко разгрузив скин.
LogicalOperatorTimer и LogicalOperatorDelayer — это круто!