2
0
mirror of https://github.com/sharkdp/bat synced 2024-11-15 00:12:57 +00:00
bat/tests/syntax-tests/highlighted/QML/BatSyntaxTest.qml
2020-10-24 12:27:16 +02:00

220 lines
31 KiB
QML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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)
 }
}