Посмотрел проект, но нам больше декларативный подход PureQML в описании UI нравится, т.к. позволяет более лаконично и явно описать то, что хочешь отобразить на экране, в качестве примера, продемонстрирую примерный код первой страницы talexample, если бы она была написана на PureQML:
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;
}
}
}
}
}
Ну несколько примеров разных кейсов могу првести:
1) Навигация во вьюхах уже реализована по умолчанию. Для того, чтобы работала там навигация на любом ТВ в принципе не нужно писать ничего
2) Навигация среди разнородных элементов. Если элементы разные но расположены скажем в горизонтали или вертикали, или просто подряд гридом, то для этого есть специальные лейауты:
Row, Column и Grid соответственно, и чтобы орагнизовать среди них навигацию, достаточно указать у этих элементов флаг «focus: true;», чтобы показать что элементы фокусабельны. Пример:
логика навигации здесь также уже реализована, и ничего дополнительно писать зесь не нужно.
3) Явно передать фокус при нажатии какой-то кнопки. Например, нужно передать фокус другому элементу при нажатии вверх и вернуть его обратно, нажав вниз:
Насчет Вашего примера со списками и разными действиями с одними и теми же кнопками, я не уверен, что понял, можете конкретнее задачу поставить, я напишу как это будет на PureQML
Ну рынок этот пока все еще велик, причем до сих пор в полях есть немало телевизоров уже не поддерживаемых платформ, плюс покупать дополнительную приставку с еще одним пультом и hdmi проводом, чтобы, например, смотреть YouTube избыточно, когда на самом телевизоре это можно сделать с помощью встроенного SmartTV.
Ну и добавлю, что на PureQML на AndroidTV тоже можено писать приложения =)
Да, сталкивались с такой проблемой. Где не помогали оптимизации, выключали анимации для таких платформ. В манифесте для этого сделали специальный флаг, который выключает анимации все глобально: disableAnimations.
И этот флаг можно задать не только в манифесте, но и в рантайме. Вот примерный код, как вырубить анимации только для webos 1й версии:
Если вендор заинтересован в приложении, то 12 год открывают, иногда даже 11. На pure есть коммерческие приложения под все эти платформы в проде, с немалым числом абонентов, но мне разрешения не давали, а бумагу что буду помалкивать я подписал, поэтому от конкретных референсов воздержусь, но прод большой и коммерческий.
А какие ошибки у Вас возникают?
И да, фреймворк живой, как можете заметить это на гитхабе. И для винды даже собирали недавно exe-шник
Также у нас есть канал поддержки в телеграмме, куда Вы можете написать о Вашей проблеме, чтобы решить ее оперативно, если, конечно, еще не решили ее самостоятельно =)
Text {
id: visibilityText;
anchors.left: parent.left;
anchors.bottom: parent.bottom;
anchors.margins: 10;
font.pixelSize: 24;
color: "#fff";
text: "Earth visibility: -";
}
// текст с координатами: долготой и широтой
// текст прижимаем к левому нижнему краю
Text {
id: positionText;
anchors.left: parent.left;
anchors.bottom: visibilityText.top;
anchors.margins: 10;
font.pixelSize: 24;
color: "#fff";
text: "Lon: -<br>Lat: -"; // в текст можно вставлять html теги
}
Теперь visibilityText прижат к левому нижнему краю, а positionText к левому краю но к верхей границе visibilityText
1) Навигация во вьюхах уже реализована по умолчанию. Для того, чтобы работала там навигация на любом ТВ в принципе не нужно писать ничего
2) Навигация среди разнородных элементов. Если элементы разные но расположены скажем в горизонтали или вертикали, или просто подряд гридом, то для этого есть специальные лейауты:
Row, Column и Grid соответственно, и чтобы орагнизовать среди них навигацию, достаточно указать у этих элементов флаг «focus: true;», чтобы показать что элементы фокусабельны. Пример:
логика навигации здесь также уже реализована, и ничего дополнительно писать зесь не нужно.
3) Явно передать фокус при нажатии какой-то кнопки. Например, нужно передать фокус другому элементу при нажатии вверх и вернуть его обратно, нажав вниз:
Насчет Вашего примера со списками и разными действиями с одними и теми же кнопками, я не уверен, что понял, можете конкретнее задачу поставить, я напишу как это будет на PureQML
Ну и добавлю, что на PureQML на AndroidTV тоже можено писать приложения =)
И этот флаг можно задать не только в манифесте, но и в рантайме. Вот примерный код, как вырубить анимации только для webos 1й версии:
Если вендор заинтересован в приложении, то 12 год открывают, иногда даже 11. На pure есть коммерческие приложения под все эти платформы в проде, с немалым числом абонентов, но мне разрешения не давали, а бумагу что буду помалкивать я подписал, поэтому от конкретных референсов воздержусь, но прод большой и коммерческий.
И да, фреймворк живой, как можете заметить это на гитхабе. И для винды даже собирали недавно exe-шник
Также у нас есть канал поддержки в телеграмме, куда Вы можете написать о Вашей проблеме, чтобы решить ее оперативно, если, конечно, еще не решили ее самостоятельно =)
сгенерит простое Hello World приложение, чтобы собрать свой проект нужно просто позвать
Насчет свойств, декларативные property проверяются, а вот сигналы нет
Теперь, чтобы открыть/закрыть OSD нужно нажать кнопку в верхнем левом углу:
Для десктопа логика осталась прежней
А результат будет такой:
Теперь visibilityText прижат к левому нижнему краю, а positionText к левому краю но к верхей границе visibilityText