diff --git a/tests/syntax-tests/highlighted/QML/BatSyntaxTest.qml b/tests/syntax-tests/highlighted/QML/BatSyntaxTest.qml new file mode 100644 index 00000000..1d1ada1d --- /dev/null +++ b/tests/syntax-tests/highlighted/QML/BatSyntaxTest.qml @@ -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) + } +} diff --git a/tests/syntax-tests/source/QML/BatSyntaxTest.qml b/tests/syntax-tests/source/QML/BatSyntaxTest.qml new file mode 100644 index 00000000..175e48eb --- /dev/null +++ b/tests/syntax-tests/source/QML/BatSyntaxTest.qml @@ -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) + } +}