Add QML syntax test

This commit is contained in:
R1tschY 2020-10-19 21:11:50 +02:00 committed by David Peter
parent 8a2122b4a4
commit 3729aefb6f
2 changed files with 438 additions and 0 deletions

View File

@ -0,0 +1,219 @@
import QtQuick 2.0
import "../components"
Page {
 id: page
 // properties
 property bool startup: true
 readonly property var var1: null
 readonly property QtObject var2: null
 allowedOrientations: Orientation.All
 /* components */
 DBusServiceWatcher {
 id: dbusService
 service: "org.bat.service"
 onRegisteredChanged: {
 if (dbusService.registered) {
 announcedNameField.text = daemon.announcedName()
 }
 }
 }
 Component.onCompleted: {
 console.debug("completed")
 }
 Flickable {
 anchors.fill: parent
 contentHeight: column.height
 visible: dbusService.registered
 ViewPlaceholder {
 enabled: !startup
 && trustedDevices.count == 0
 && nearDevices.count == 0
 text: qsTr("Install Bat.")
 }
 Column {
 id: column
 width: page.width
 spacing: Theme.paddingLarge
 PageHeader {
 title: qsTr("Syntax Test")
 }
 TextField {
 id: announcedNameField
 width: parent.width
 label: qsTr("Device Name")
 text: dbusService.registered ? daemon.announcedName() : ""
 onActiveFocusChanged: {
 if (activeFocus)
 return
 if (text.length === 0) {
 text = daemon.announcedName()
 } else {
 daemon.setAnnouncedName(text)
 placeholderText = text
 }
 }
 EnterKey.onClicked: announcedNameField.focus = false
 EnterKey.iconSource: "image://theme/icon-m-enter-close"
 }
 Component {
 id: deviceDelegate
 ListItem {
 id: listItem
 property bool showStatus: deviceStatusLabel.text.length
 width: page.width
 height: Theme.itemSizeMedium
 Image {
 id: icon
 source: iconUrl
 x: Theme.horizontalPageMargin
 anchors.verticalCenter: parent.verticalCenter
 sourceSize.width: Theme.iconSizeMedium
 sourceSize.height: Theme.iconSizeMedium
 }
 Label {
 id: deviceNameLabel
 anchors {
 left: icon.right
 leftMargin: Theme.paddingLarge
 right: parent.right
 rightMargin: Theme.horizontalPageMargin
 }
 y: listItem.contentHeight / 2 - implicitHeight / 2
 - showStatus * (deviceStatusLabel.implicitHeight / 2)
 text: name
 color: listItem.highlighted
 ? Theme.highlightColor
 : Theme.primaryColor
 truncationMode: TruncationMode.Fade
 textFormat: Text.PlainText
 Behavior on y { NumberAnimation {} }
 }
 Label {
 id: deviceStatusLabel
 anchors {
 left: deviceNameLabel.left
 top: deviceNameLabel.bottom
 right: parent.right
 rightMargin: Theme.horizontalPageMargin
 }
 text: (trusted && reachable)
 ? qsTr("Connected")
 : (hasPairingRequests || waitsForPairing
 ? qsTr("Pending pairing request ...") : "")
 color: listItem.highlighted
 ? Theme.secondaryHighlightColor
 : Theme.secondaryColor
 truncationMode: TruncationMode.Fade
 font.pixelSize: Theme.fontSizeExtraSmall
 opacity: showStatus ? 1.0 : 0.0
 width: parent.width
 textFormat: Text.PlainText
 Behavior on opacity { FadeAnimation {} }
 }
 onClicked: {
 pageStack.push(
 Qt.resolvedUrl("DevicePage.qml"),
 { deviceId: id })
 }
 }
 }
 DeviceListModel {
 id: devicelistModel
 }
 ColumnView {
 id: devicesView
 width: page.width
 itemHeight: Theme.itemSizeMedium
 model: trustedDevicesModel
 delegate: deviceDelegate
 visible: devicesView.count > 0
 }
 }
 PullDownMenu {
// MenuItem {
// text: qsTr("About ...")
// onClicked: pageStack.push(Qt.resolvedUrl("AboutPage.qml"))
// }
 MenuItem {
 text: qsTr("Settings ...")
 onClicked: pageStack.push(Qt.resolvedUrl("SettingsPage.qml"))
 }
 }
 VerticalScrollDecorator {}
 }
 /*
 Connections {
 target: ui
 onOpeningDevicePage: openDevicePage(deviceId)
 }*/
 Timer {
 interval: 1000
 running: true
 repeat: false
 onTriggered: startup = false
 }
 function openDevicePage(deviceId) {
 if (typeof pageStack === "undefined")
 return;
 console.log("opening device " + deviceId)
 window.activate()
 var devicePage = pageStack.find(function(page) {
 return page.objectName === "DevicePage"
 })
 if (devicePage !== null && devicePage.deviceId === deviceId) {
 pageStack.pop(devicePage)
 ui.showMainWindow()
 return
 }
 pageStack.pop(page, PageStackAction.Immediate)
 pageStack.push(
 Qt.resolvedUrl("DevicePage.qml"),
 { deviceId: deviceId },
 PageStackAction.Immediate)
 }
}

View File

@ -0,0 +1,219 @@
import QtQuick 2.0
import "../components"
Page {
id: page
// properties
property bool startup: true
readonly property var var1: null
readonly property QtObject var2: null
allowedOrientations: Orientation.All
/* components */
DBusServiceWatcher {
id: dbusService
service: "org.bat.service"
onRegisteredChanged: {
if (dbusService.registered) {
announcedNameField.text = daemon.announcedName()
}
}
}
Component.onCompleted: {
console.debug("completed")
}
Flickable {
anchors.fill: parent
contentHeight: column.height
visible: dbusService.registered
ViewPlaceholder {
enabled: !startup
&& trustedDevices.count == 0
&& nearDevices.count == 0
text: qsTr("Install Bat.")
}
Column {
id: column
width: page.width
spacing: Theme.paddingLarge
PageHeader {
title: qsTr("Syntax Test")
}
TextField {
id: announcedNameField
width: parent.width
label: qsTr("Device Name")
text: dbusService.registered ? daemon.announcedName() : ""
onActiveFocusChanged: {
if (activeFocus)
return
if (text.length === 0) {
text = daemon.announcedName()
} else {
daemon.setAnnouncedName(text)
placeholderText = text
}
}
EnterKey.onClicked: announcedNameField.focus = false
EnterKey.iconSource: "image://theme/icon-m-enter-close"
}
Component {
id: deviceDelegate
ListItem {
id: listItem
property bool showStatus: deviceStatusLabel.text.length
width: page.width
height: Theme.itemSizeMedium
Image {
id: icon
source: iconUrl
x: Theme.horizontalPageMargin
anchors.verticalCenter: parent.verticalCenter
sourceSize.width: Theme.iconSizeMedium
sourceSize.height: Theme.iconSizeMedium
}
Label {
id: deviceNameLabel
anchors {
left: icon.right
leftMargin: Theme.paddingLarge
right: parent.right
rightMargin: Theme.horizontalPageMargin
}
y: listItem.contentHeight / 2 - implicitHeight / 2
- showStatus * (deviceStatusLabel.implicitHeight / 2)
text: name
color: listItem.highlighted
? Theme.highlightColor
: Theme.primaryColor
truncationMode: TruncationMode.Fade
textFormat: Text.PlainText
Behavior on y { NumberAnimation {} }
}
Label {
id: deviceStatusLabel
anchors {
left: deviceNameLabel.left
top: deviceNameLabel.bottom
right: parent.right
rightMargin: Theme.horizontalPageMargin
}
text: (trusted && reachable)
? qsTr("Connected")
: (hasPairingRequests || waitsForPairing
? qsTr("Pending pairing request ...") : "")
color: listItem.highlighted
? Theme.secondaryHighlightColor
: Theme.secondaryColor
truncationMode: TruncationMode.Fade
font.pixelSize: Theme.fontSizeExtraSmall
opacity: showStatus ? 1.0 : 0.0
width: parent.width
textFormat: Text.PlainText
Behavior on opacity { FadeAnimation {} }
}
onClicked: {
pageStack.push(
Qt.resolvedUrl("DevicePage.qml"),
{ deviceId: id })
}
}
}
DeviceListModel {
id: devicelistModel
}
ColumnView {
id: devicesView
width: page.width
itemHeight: Theme.itemSizeMedium
model: trustedDevicesModel
delegate: deviceDelegate
visible: devicesView.count > 0
}
}
PullDownMenu {
// MenuItem {
// text: qsTr("About ...")
// onClicked: pageStack.push(Qt.resolvedUrl("AboutPage.qml"))
// }
MenuItem {
text: qsTr("Settings ...")
onClicked: pageStack.push(Qt.resolvedUrl("SettingsPage.qml"))
}
}
VerticalScrollDecorator {}
}
/*
Connections {
target: ui
onOpeningDevicePage: openDevicePage(deviceId)
}*/
Timer {
interval: 1000
running: true
repeat: false
onTriggered: startup = false
}
function openDevicePage(deviceId) {
if (typeof pageStack === "undefined")
return;
console.log("opening device " + deviceId)
window.activate()
var devicePage = pageStack.find(function(page) {
return page.objectName === "DevicePage"
})
if (devicePage !== null && devicePage.deviceId === deviceId) {
pageStack.pop(devicePage)
ui.showMainWindow()
return
}
pageStack.pop(page, PageStackAction.Immediate)
pageStack.push(
Qt.resolvedUrl("DevicePage.qml"),
{ deviceId: deviceId },
PageStackAction.Immediate)
}
}