mirror of
https://github.com/sharkdp/bat.git
synced 2025-06-24 09:15:55 +01:00
Add QML syntax test
This commit is contained in:
tests/syntax-tests
219
tests/syntax-tests/source/QML/BatSyntaxTest.qml
Normal file
219
tests/syntax-tests/source/QML/BatSyntaxTest.qml
Normal 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)
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user