Comments 35
А где-нибудь есть список приложений разработанных на этом фреймворке? Было бы интересно что-то кроме плееров вообще делают?
У меня телевизор Samsung 2012 года, это я так понимаю Orsay. Ничего нового на них уже никто не пилит. Разве что XSMART из недавнего довольно качественно сделан.
Если вендор заинтересован в приложении, то 12 год открывают, иногда даже 11. На pure есть коммерческие приложения под все эти платформы в проде, с немалым числом абонентов, но мне разрешения не давали, а бумагу что буду помалкивать я подписал, поэтому от конкретных референсов воздержусь, но прод большой и коммерческий.
И этот флаг можно задать не только в манифесте, но и в рантайме. Вот примерный код, как вырубить анимации только для webos 1й версии:
Device { id: device; }
onCompleted: {
var platform = this._context.system.os.toLowerCase();
var sdk = device.sdk;
$manifest$disableAnimations = (platform === "webos" && sdk.indexOf("1.") === 0);
}
Интересное решение, коллега. А чем вас не устроил реакт или любая другая библиотека для управления отображением?
Мы с успехом применяем jsx, но не при помощи реакта, правда.
1) Навигация во вьюхах уже реализована по умолчанию. Для того, чтобы работала там навигация на любом ТВ в принципе не нужно писать ничего
2) Навигация среди разнородных элементов. Если элементы разные но расположены скажем в горизонтали или вертикали, или просто подряд гридом, то для этого есть специальные лейауты:
Row, Column и Grid соответственно, и чтобы орагнизовать среди них навигацию, достаточно указать у этих элементов флаг «focus: true;», чтобы показать что элементы фокусабельны. Пример:
Row {
height: 100;
spacing: 10;
Rectangle {
height: 100;
width: 200;
color: activeFocus ? "red" : "blue";
focus: true;
}
Image {
height: 100;
width: 100;
source: activeFocus ? "res/focusedImage.png" : "res/image.png";
focus: true;
}
}
логика навигации здесь также уже реализована, и ничего дополнительно писать зесь не нужно.
3) Явно передать фокус при нажатии какой-то кнопки. Например, нужно передать фокус другому элементу при нажатии вверх и вернуть его обратно, нажав вниз:
Rectangle {
id: topRect;
width: 100;
height: 100;
color: "red";
focus: true;
onDownPressed: { bottomRect.setFocus(); }
}
Rectangle {
id: bottomRect;
y: 100;
width: 100;
height: 100;
color: "blue";
focus: true;
onUpPressed: { topRect.setFocus(); }
}
Насчет Вашего примера со списками и разными действиями с одними и теми же кнопками, я не уверен, что понял, можете конкретнее задачу поставить, я напишу как это будет на PureQML
необходимого направления =)
Даже без особого конфигурирования работает очень не плохо, но можно довольно гибко подстроить.
Опять же как я понял spatial берет полный контроль за нажатиями на себя, мне данный вариант не совсем подходит потому как у меня навигация чуть сложнее… есть скрытые элементы которые должны отобразиться при определенных обстоятельствах и получить фокус.
Интересно… глыну по подробней. У меня по сути так же работает… на дистанциях. spatial завязана на JQuery… у меня сейчас тоже в одном месте используется JQuery но надо убирать этот костыль… переписываю на чистый js.
Не, ну что вы ей Богу, какой jquery.))) Прямой завязки на него там конечно же нет. Просто если jquery подключен, через него делаются некоторые DOM операции и обертывается либа в плагин. Если его нет, и черт с ним))) Так что можете считать, что это чистый JS.
Опять же как я понял spatial берет полный контроль за нажатиями на себя, мне данный вариант не совсем подходит потому как у меня навигация чуть сложнее… есть скрытые элементы которые должны отобразиться при определенных обстоятельствах и получить фокус.
Там есть целый набор событий, которые можно использовать в качестве хуков. Далее, есть реально типа хука navigableFilter. Ну и главное там есть разделение на секции, и всякие там add/remove, enable/disable, pause/resume для управления этими секциями.
Например, вам нужно «замкнуть» фокус на модальном окне. Очень просто. Просто добавляем секцию для него с простым конфигом и при активации модалки, отдаем ей фокус:
// добавили секцию с restrict: 'self-only'
SN.add({
id: 'modal',
restrict: 'self-only'
});
// когда надо отдаем ей фокус
SN.focus('modal');
Сам пытался сделать «Hello, Word» для телевизора самсунг в 2012 году
Ну и добавлю, что на PureQML на AndroidTV тоже можено писать приложения =)
чтобы, например, смотреть YouTube избыточно, когда на самом телевизоре это можно сделать с помощью встроенного SmartTVУвы, YouTube перестает работать в некоторых SmartTV. В Самсунге 12 или 13 года выпуска приложение YouTube сначала выдавало уведомление, что поддержка YouTube скоро будет удалена, а потом самоудалилось с телевизора. И поставить заново штатным путем нельзя, в маркете его просто нет.
Smart TV — это следующий шаг после приставки.
Как насчёт TAL?
Image {
amchors.fill: context;
source: "res/main_bg.png";
Column {
width: 100%;
spacing: 10;
focus: true;
Text {
width: 100%;
text: "Hello World";
font.pixelSize: 72;
color: "#fff";
horizontalAlignment: Text.AlignHCenter;
}
Text {
width: 100%;
text: "Welcome to your first TAL application!";
font.pixelSize: 28;
color: "#fff";
horizontalAlignment: Text.AlignHCenter;
}
ListView {
width: 50%;
height: contentHeight;
spacing: 10;
focus: true;
model: ListModel {
ListElement { text: "Carousel Example"; }
ListElement { text: "Sample Video Player Example"; }
ListElement { text: "Horizontal Progress Bar Example"; }
}
delegate: Rectangle {
width: 100%;
height: 40;
color: activeFocus ? "#0ff" : "#ccc";
Text {
width: 100%;
height: 100%;
text: "Welcome to your first TAL application!";
font.pixelSize: 21;
color: "#000";
verticalAlignment: Text.AlignVCenter;
horizontalAlignment: Text.AlignHCenter;
}
}
}
}
}
Боюсь что данный данный проект (и вообще другие схожые) без серьезной поддержки производителя, возможности писать плагины и… достаточно длинного списка контрибутеров канет в Лету. Либо его поддерживать как побочный продукт используя в своем каком то проекте.
Каждый проект как правило индивидуален… и зачастую ни один фреймворк не покрывает потребности. Либо не хватает функционала, либо не достаточну «кунфигурабелен»… либо слишком результат оказывается громоздким. Большой проект скорее всего будет использовать самописный «костыль» дабы получить максимум скорости работы интерфейса… как ни прискорбно но процессоры достаточно слабы в Смарт ТВ по сравнению с компами где можно городить не заботясь о том сколько будет весить проект… сколько пожрет процессорного времени и тд. Когда делал первые шаги на webOS 1.х не так редки были случаи когда программа просто вылетала… скорее всего из-за нехватки памяти.
Было дело как-то если не ошибаюсь предлагали мне вроде поляки какой то фреймворк для создания мультиплатформенных приложения… но чет уже года полтороа или два я о данном фрейме даже не слышу… ну тут либо мало влезаю в данную тематику дальше своего проекта либо он так же канул в Лету.
Несколько сумбурно но надеюсь суть ясна… что будет тяжело поддерживать подобный проект на плаву… если только много интузиазма либо как побочный продукт используемый в своих проектах.
webOS 1.х в плане производительности казался несбыточной мечтой…
Подводные грабли SmartTV разработки