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