>>30721 Паста старая, но как раз про 2-3 кнопки
Как создавать пользовательские интерфейсы? Вот хочу я "умный дом", где управлять светом я смогу через компьютер (и инет, с телефона и т.д.). Предположим, что аппаратная часть уже готова, как и некая liblight.so, которая принимает на себя ID лампочки и % освещенности как float-значение. А вот как это оформить в виде интерфейса пользователя?
Можно нарисовать 2 кнопки "вкл" и "выкл", но тогда чем это будет отличаться от классического выключателя? А можно нарисовать бегунок, задающий яркость лампочки в %%, но вот двигать которым - неудобно, ибо надо тянуться к мышке. Может нарисовать 2 кнопки, а между ними бегунок? Тоже вариант! Но если я не хочу включать на полную мощность каждый раз, а предпочитаю мягкий, рассеянный свет - мне от бегунка таки не уйти, да? Или добавить еще кнопок/комбобокс и поддержку профилей вида "совсем яркий, приглушенный свет, ночная подсветка"? А еще можно сделать плавное переключение между режимами, дабы лампочка дольше работала и плавно включалась/выключалась, но как это отразить в интерфейсе? Можно конечно сделать примитивную линейную интерполяцию, длительностью 0.5 секунды, но это слишком частный случай для гика. Я бы предпочел возможность задать кривую (возможно даже через кривые Безье) и длительность, но это слишком перегрузит интерфейс.
А если в люстре несколько лампочек? Дублировать ли мне все эти кнопочки/ползунки для каждой, или управлять всеми одновременно? Если всеми, то при 20% яркости будут включены все 5 ламп на 20%, или 1 на 100%? Если одна, то какая именно? Нужно будет создавать очередь для указания приоритета? А если лампочки разной мощности, как в этом случае быть? Указывать в настройках типы ламп? Или добавить в систему датчик освещенности и мерять результат в люксах? Кстати, о датчике: он может мерять не только свет от ламп, но и свет с улицы, тем самым подстраивая свет в комнате под определенное значение. Но тогда придется делать еще бегунки для управления общей яркостью, а кнопки упраления лампами придется отключить. Причем, если система будет автоматической, то нужно предусмотреть таймер, дабы отключал свет автоматически, если я уснул на клавиатуре. Но какой интерфейс для таймера сделать? Простой спинбокс "вырубить свет после NN часов", или расписание у духе гуглькалендаря, где десятки полей и кнопок? Вообще, система таймера хороша, но если я заснул на клаве, зачем лампочке гореть еще 3 часа, может взять картинку с камеры (какой умный дом дом без камер?), да искать активность на ней? Если активности нет в течении НН-минут, то выключаем свет. Для этого надо добавить еще 1 поле времени и простой графический редактор для задания маски (например, закрасить окно/шторы, дабы свет от проезжающих автомобилей не учитывался при расчете движения).
Comment too long. Click
here to view the full text.