All streams
Search
Write a publication
Pull to refresh
8
0
Send message
Посмотрел проект, но нам больше декларативный подход 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;», чтобы показать что элементы фокусабельны. Пример:
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
Ну рынок этот пока все еще велик, причем до сих пор в полях есть немало телевизоров уже не поддерживаемых платформ, плюс покупать дополнительную приставку с еще одним пультом и hdmi проводом, чтобы, например, смотреть YouTube избыточно, когда на самом телевизоре это можно сделать с помощью встроенного SmartTV.
Ну и добавлю, что на PureQML на AndroidTV тоже можено писать приложения =)
Хотя бы из-за того, что не надо руками за фокусом следить и описывать все переходы при навигации
Да, сталкивались с такой проблемой. Где не помогали оптимизации, выключали анимации для таких платформ. В манифесте для этого сделали специальный флаг, который выключает анимации все глобально: disableAnimations.
И этот флаг можно задать не только в манифесте, но и в рантайме. Вот примерный код, как вырубить анимации только для 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);
}

Если вендор заинтересован в приложении, то 12 год открывают, иногда даже 11. На pure есть коммерческие приложения под все эти платформы в проде, с немалым числом абонентов, но мне разрешения не давали, а бумагу что буду помалкивать я подписал, поэтому от конкретных референсов воздержусь, но прод большой и коммерческий.

А какие ошибки у Вас возникают?
И да, фреймворк живой, как можете заметить это на гитхабе. И для винды даже собирали недавно exe-шник
Также у нас есть канал поддержки в телеграмме, куда Вы можете написать о Вашей проблеме, чтобы решить ее оперативно, если, конечно, еще не решили ее самостоятельно =)
Команда
./qmlcore/build --boilerplate

сгенерит простое Hello World приложение, чтобы собрать свой проект нужно просто позвать
./qmlcore/build

Насчет свойств, декларативные property проверяются, а вот сигналы нет
Сделал UI адаптируемым для мобильных телефонов, посмотреть можно тут
Теперь, чтобы открыть/закрыть OSD нужно нажать кнопку в верхнем левом углу:


Для десктопа логика осталась прежней
Если я правильно понял условия то код нужен такой:
Item {
	anchors.fill: context;

	Rectangle {
		width: 20%;
		height: 20%;
		color: "red";

		Text {
			font.pixelSize: parent.height;
			text: "42";
		}
	}
}

А результат будет такой:

При желании зацепиться анкерами можно:
	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
Похоже Вы перепутали «LinkedIn» с «The Real Deal»
«Человек в высоком замке» — не антиутопия, а sci-fi в жанре альтернативной истории.

Information

Rating
Does not participate
Registered
Activity