Плитки в экранах
В контейнерах можно выводить плитки. Принцип такой же как например со «списком карточек» или «таблицей» - т.е. переменная с JSON определяющая одновременно внешний вид и данные. Собственно это и есть список карточек, но с более широкими возможностями, а именно:
1) На плитку можно вывести все что угодно в любом расположении – надписи, графику, диаграммы . Выводится содержимое контейнера-шаблона. Т.е. в элементе плитки просто указывается шаблон структуры (экран с контейнером который добавлен в операцию) и данные плитки – переменные. А также цвет плитки (и цвет фона под плитками)
Вот так задается JSON плиток. В каждой плитке определяется шаблон (экран с контейнером), данные которые идут в переменные и цвет. Принцип с контейнером - шаблоном аналогичен определению диалога. В демо базе есть отдельная конфигурация с примерами. Вот пример JSON для заполнения:
2) Плиток в ряду может быть сколько угодно: плитки — это «массив массивов» (массив строк, в каждой строке массив плиток в ряду). Т.е. указав в массиве 2 элемента с плитками на экране выведется 2 плитки.
От количества элементов в ряду зависит размер плитки:
Если плиток от 2 до 3 в ряду, то размер такой:
Если плиток от 4х и более, то размер такой
Если плитка одна в ряду, то размер минимальный – такой как в п.1 , но не ограничен – далее плитка может растягиваться, если добавлять информацию. Она растягивается бесконечно.
3) При нажатии на плитку будет запущен процесс, указанный в плитке в поле start_process либо экран текущего процесса в поле start_screen. Вообще плиточный экран по умолчанию воспринимается как некое меню для запуска процессов – т.е. при нажатии должен стартовать процесс, а при завершении процесса возвращаться на меню. Для этого нужно указывать start_process в плитке. Но также можно использовать его для как шаг процесса как например используется таблица или список плиток – для запуска экрана с закрытием текущего шага. Для этого используется start_screen
Плиточное главное меню
Можно переопределить основное меню приложения и сделать плиточный интерфейс. Он не только более эстетичный, но и более информативный - на нем можно выводить например текущие задачи, количество заказов и другую информацию, которая может поступать из фоновых обработчиков или обработчиков по расписанию. То есть обновляться в фоне.
Для этого нужно указать Вид стартового экрана в конфигурации – Плитки, определить переменную плиток (и задать ее например в обработчике «При запуске (Python)») и процесс-контейнер всех шаблонов плиток (т.е. процесс в котором хранятся необходимые шаблоны плиток)
Обновление информации на плитках меню
Также информацию на плитках можно обновлять из фона. Например можно задать в обработчике по расписанию «По расписанию Python» периодическое обновление переменной плиток, а чтобы новые данные отрисовались использовать команду «UpdateMenu»
Картинки из кэша
Передавать картинки через base64 можно, но это довольно затратная операция, а некоторые элементы интерфейса повторяются по многу раз (например список плиток с одинаковой картинкой). Поэтому для повышения производительности а также для удобства работы добавлена возможность передавать картинки вместе с конфигурацией. Т.е. картинки, которые нужно использовать в конфигурации в целом перечисляются на закладке «Медиаресурсы» далее при загрузке конфигурации они загружаются на устройство в виде файлов и далее элементы интерфейса уже работают с файлами
Для того чтобы использовать такую картинку нужно указать символ «^» причем можно в явном виде сослаться на ресурс , например ^flame – где “flame” – это имя картинки, а можно в случае с плитками сослаться на переменную, которая укажет на имя картинки. Т.е. шаблон плитки один, а картинки разные. В демо базе так устроен шаблон «Маленькие плитки» в меню.
Подписка на события сканера ТСД
Некоторые сканеры ТСД посылают сообщения интенты вида например scan.rcv.message, urovo.rcv.message и т.д. Это прописано в описании или в примерах кода на сайте производителя, иногда в настройках приложения сканера. Можно поставить настройку в приложении для подписки на такие сообщения.
Таким образом события штрихкода будут поступать из фонового процесса, а не через «разрыв клавиатуры» что удобно с точки зрения интерфейса – можно размещать поля ввода на тех экранах где происходит сканирование и они не будут перехватывать штрихкоды (аналогично это происходит например в режиме подключения Bluetooth через SPP). Кроме того, это позволяет увеличить охват поддерживаемых устройств – не все устройства умеют “wedge as keys» или посылать штрихкод в строку.
Режим «мягкий оффлайн»
Галочка в конфигурации «Автономный режим» теперь выполняет не только информационную роль, а еще указывает приложению что если есть связь то можно скачать конфигурацию онлайн, выполнить какие то действия онлайн, если же связи нет то не прерываться по ошибке а работать со последней локальной версией конфигурации и выполнять обработчики которые может выполнить оффлайн.
Это наиболее гибкий режим. В отличии от например галочки «Самостоятельный режим» в котором приложение жестко пресекает попытки связи с онлайн-сервисами сервера.
Прочее
Еще благодаря 33 lab в демке появилась красивая и удобная работа с «Элементами стилей». Большое спасибо!
А также выражаю благодарность GarickRus за отличное расширение для подсветки синтаксиса в Simple UI - //infostart.ru/public/1433156/. Очень удобно!
Основная статья и демо база тут: //infostart.ru/public/1153616/